Subversion Repositories Kolibri OS

Rev

Rev 9911 | Rev 9930 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9911 Rev 9926
Line 4... Line 4...
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
5
;; Distributed under terms of the GNU General Public License    ;;
5
;; Distributed under terms of the GNU General Public License    ;;
6
;;                                                              ;;
6
;;                                                              ;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 8... Line 8...
8
 
8
 
Line 9... Line 9...
9
$Revision: 9911 $
9
$Revision: 9926 $
10
 
10
 
11
;==============================================================================
11
;==============================================================================
Line 78... Line 78...
78
        mov     eax, ebx
78
        mov     eax, ebx
79
        mov     ebx, ecx
79
        mov     ebx, ecx
80
        mov     ecx, edx
80
        mov     ecx, edx
81
        mov     edx, [current_slot_idx]
81
        mov     edx, [current_slot_idx]
82
        shl     edx, BSF sizeof.WDATA
82
        shl     edx, BSF sizeof.WDATA
83
        add     eax, [edx + window_data + WDATA.box.left]
83
        add     eax, [window_data + edx + WDATA.box.left]
84
        add     ebx, [edx + window_data + WDATA.box.top]
84
        add     ebx, [window_data + edx + WDATA.box.top]
85
        mov     edi, [current_slot]
-
 
86
        add     eax, [edi+APPDATA.wnd_clientbox.left]
85
        add     eax, [window_data + edx + WDATA.clientbox.left]
87
        add     ebx, [edi+APPDATA.wnd_clientbox.top]
86
        add     ebx, [window_data + edx + WDATA.clientbox.top]
88
        xor     edi, edi ; no force
87
        xor     edi, edi ; no force
89
        and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
88
        and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
90
        jmp     __sys_putpixel
89
        jmp     __sys_putpixel
91
;------------------------------------------------------------------------------
90
;------------------------------------------------------------------------------
Line 104... Line 103...
104
        pop     esi
103
        pop     esi
105
        jnz     .err
104
        jnz     .err
Line 106... Line 105...
106
 
105
 
107
        mov     eax, [current_slot_idx]
106
        mov     eax, [current_slot_idx]
108
        shl     eax, BSF sizeof.WDATA
107
        shl     eax, BSF sizeof.WDATA
109
        mov     ebp, [eax + window_data + WDATA.box.left]
-
 
110
        push    esi
-
 
111
        mov     esi, [current_slot]
108
        mov     ebp, [window_data + eax + WDATA.box.left]
112
        add     ebp, [esi+APPDATA.wnd_clientbox.left]
109
        add     ebp, [window_data + eax + WDATA.clientbox.left]
113
        shl     ebp, 16
110
        shl     ebp, 16
114
        add     ebp, [eax + window_data + WDATA.box.top]
111
        add     ebp, [window_data + eax + WDATA.box.top]
115
        add     bp, word[esi+APPDATA.wnd_clientbox.top]
-
 
116
        pop     esi
112
        add     bp, word[window_data + eax + WDATA.clientbox.top]
117
        test    ecx, 0x08000000  ; redirect the output to the user area
113
        test    ecx, 0x08000000  ; redirect the output to the user area
118
        jnz     @f
114
        jnz     @f
119
        add     ebx, ebp
115
        add     ebx, ebp
120
align 4
116
align 4
Line 149... Line 145...
149
 
145
 
150
        movzx   ecx, ax ; ecx - x.size
146
        movzx   ecx, ax ; ecx - x.size
151
        shr     eax, 16 ; eax - x.coord
147
        shr     eax, 16 ; eax - x.coord
152
        movzx   edx, bx ; edx - y.size
148
        movzx   edx, bx ; edx - y.size
153
        shr     ebx, 16 ; ebx - y.coord
149
        shr     ebx, 16 ; ebx - y.coord
154
        mov     esi, [current_slot]
-
 
-
 
150
        mov     esi, [current_slot_idx]
155
 
151
        shl     esi, BSF sizeof.WDATA
156
        add     eax, [esi + APPDATA.wnd_clientbox.left]
152
        add     eax, [window_data + esi + WDATA.clientbox.left]
157
        add     ebx, [esi + APPDATA.wnd_clientbox.top]
153
        add     ebx, [window_data + esi + WDATA.clientbox.top]
158
        add     ecx, eax
154
        add     ecx, eax
159
        add     edx, ebx
155
        add     edx, ebx
160
        jmp     vesa20_drawbar
156
        jmp     vesa20_drawbar
161
.drectr:
157
.drectr:
Line 165... Line 161...
165
align 4
161
align 4
166
; system function 38
162
; system function 38
167
syscall_drawline:
163
syscall_drawline:
168
        mov     edi, [current_slot_idx]
164
        mov     edi, [current_slot_idx]
169
        shl     edi, BSF sizeof.WDATA
165
        shl     edi, BSF sizeof.WDATA
170
        movzx   eax, word[edi + window_data + WDATA.box.left]
166
        movzx   eax, word[window_data + edi + WDATA.box.left]
171
        mov     ebp, eax
167
        mov     ebp, eax
172
        mov     esi, [current_slot]
-
 
173
        add     ebp, [esi+APPDATA.wnd_clientbox.left]
168
        add     ebp, [window_data + edi + WDATA.clientbox.left]
174
        add     ax, word[esi+APPDATA.wnd_clientbox.left]
169
        add     ax, word[window_data + edi + WDATA.clientbox.left]
175
        add     ebp, ebx
170
        add     ebp, ebx
176
        shl     eax, 16
171
        shl     eax, 16
177
        movzx   ebx, word[edi + window_data + WDATA.box.top]
172
        movzx   ebx, word[window_data + edi + WDATA.box.top]
178
        add     eax, ebp
173
        add     eax, ebp
179
        mov     ebp, ebx
174
        mov     ebp, ebx
180
        add     ebp, [esi+APPDATA.wnd_clientbox.top]
175
        add     ebp, [window_data + edi + WDATA.clientbox.top]
181
        add     bx, word[esi+APPDATA.wnd_clientbox.top]
176
        add     bx, word[window_data + edi + WDATA.clientbox.top]
182
        add     ebp, ecx
177
        add     ebp, ecx
183
        shl     ebx, 16
178
        shl     ebx, 16
184
        xor     edi, edi
179
        xor     edi, edi
185
        add     ebx, ebp
180
        add     ebx, ebp
186
        mov     ecx, edx
181
        mov     ecx, edx
Line 409... Line 404...
409
; --------------------------
404
; --------------------------
410
;; Set window shape scale:
405
;; Set window shape scale:
411
;> ebx = 1
406
;> ebx = 1
412
;> ecx = scale power (resulting scale is 2^ebx)
407
;> ecx = scale power (resulting scale is 2^ebx)
413
syscall_set_window_shape: 
408
syscall_set_window_shape: 
414
        mov     edi, [current_slot]
409
        mov     edi, [current_slot_idx]
-
 
410
        shl     edi, BSF sizeof.WDATA
Line 415... Line 411...
415
 
411
 
416
        test    ebx, ebx
412
        test    ebx, ebx
417
        jne     .shape_scale
413
        jne     .shape_scale
418
        mov     [edi + APPDATA.wnd_shape], ecx
414
        mov     [window_data + edi + WDATA.shape], ecx
419
;--------------------------------------
415
;--------------------------------------
420
align 4
416
align 4
421
.shape_scale:
417
.shape_scale:
422
        dec     ebx
418
        dec     ebx
423
        jnz     .exit
419
        jnz     .exit
424
        mov     [edi + APPDATA.wnd_shape_scale], ecx
420
        mov     [window_data + edi + WDATA.shape_scale], ecx
425
;--------------------------------------
421
;--------------------------------------
426
align 4
422
align 4
427
.exit:
423
.exit:
428
        ret
424
        ret
Line 496... Line 492...
496
@@:
492
@@:
497
        cmp     dl, 4
493
        cmp     dl, 4
498
        jc      @f
494
        jc      @f
499
        xor     edx, edx
495
        xor     edx, edx
500
@@:
496
@@:
501
        mov     [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx
497
        mov     [window_data + edi + WDATA.caption], ecx
502
        mov     [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl
498
        mov     [window_data + edi + WDATA.captionEncoding], dl
503
        jmp     window._.draw_window_caption
499
        jmp     window._.draw_window_caption
504
;------------------------------------------------------------------------------
500
;------------------------------------------------------------------------------
Line 505... Line 501...
505
 
501
 
506
align 4
502
align 4
Line 559... Line 555...
559
align 4
555
align 4
560
.next_window:
556
.next_window:
561
        movzx   edi, word[WIN_POS + esi * 2]
557
        movzx   edi, word[WIN_POS + esi * 2]
562
        shl     edi, BSF sizeof.WDATA        ;size of TASKDATA and WDATA = 32 bytes
558
        shl     edi, BSF sizeof.WDATA        ;size of TASKDATA and WDATA = 32 bytes
Line 563... Line 559...
563
 
559
 
564
        cmp     byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE
560
        cmp     byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE
Line 565... Line 561...
565
        je      .skip_window
561
        je      .skip_window
566
 
562
 
567
        add     edi, window_data
563
        add     edi, window_data
Line 1088... Line 1084...
1088
align 4
1084
align 4
1089
.loop:
1085
.loop:
1090
        movzx   edi, word[WIN_POS + eax * 2]
1086
        movzx   edi, word[WIN_POS + eax * 2]
1091
        shl     edi, BSF sizeof.WDATA
1087
        shl     edi, BSF sizeof.WDATA
1092
; it is a unused slot?
1088
; it is a unused slot?
1093
        cmp     byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE
1089
        cmp     byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE
1094
        je      @f
1090
        je      @f
1095
; it is a hidden thread?
1091
; it is a hidden thread?
1096
        lea     esi, [SLOT_BASE + edi*8 + APPDATA.app_name]
1092
        lea     esi, [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.app_name]
1097
        cmp     [esi], byte '@'
1093
        cmp     [esi], byte '@'
1098
        je      @f
1094
        je      @f
1099
; is it already minimized?
1095
; is it already minimized?
1100
        test    [edi + window_data+WDATA.fl_wstate], WSTATE_MINIMIZED
1096
        test    [edi + window_data+WDATA.fl_wstate], WSTATE_MINIMIZED
1101
        jnz     @f
1097
        jnz     @f
Line 1547... Line 1543...
1547
        test    cl, WSTATE_MAXIMIZED
1543
        test    cl, WSTATE_MAXIMIZED
1548
        jnz     .exit
1544
        jnz     .exit
Line 1549... Line 1545...
1549
 
1545
 
1550
        mov     eax, edi
1546
        mov     eax, edi
1551
        sub     eax, window_data
1547
        sub     eax, window_data
1552
        shl     eax, 3
1548
        shl     eax, (BSF sizeof.APPDATA - BSF sizeof.WDATA)
Line 1553... Line 1549...
1553
        add     eax, SLOT_BASE
1549
        add     eax, SLOT_BASE
1554
 
1550
 
Line 1582... Line 1578...
1582
        mov     eax, [_skinh]
1578
        mov     eax, [_skinh]
1583
        mov     [window_topleft + 8 * 3 + 4], eax
1579
        mov     [window_topleft + 8 * 3 + 4], eax
1584
        mov     [window_topleft + 8 * 4 + 4], eax
1580
        mov     [window_topleft + 8 * 4 + 4], eax
Line 1585... Line 1581...
1585
 
1581
 
1586
        mov     ecx, edi
-
 
1587
        sub     edi, window_data
-
 
1588
        shl     edi, 3
1582
        mov     ecx, edi
1589
        test    [ecx + WDATA.fl_wstyle], WSTYLE_CLIENTRELATIVE
1583
        test    [ecx + WDATA.fl_wstyle], WSTYLE_CLIENTRELATIVE
Line 1590... Line 1584...
1590
        jz      .whole_window
1584
        jz      .whole_window
1591
 
1585
 
1592
        movzx   eax, [ecx + WDATA.fl_wstyle]
1586
        movzx   eax, [ecx + WDATA.fl_wstyle]
1593
        and     eax, 0x0F
1587
        and     eax, 0x0F
1594
        mov     eax, [eax * 8 + window_topleft + 0]
1588
        mov     eax, [eax * 8 + window_topleft + 0]
1595
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.left], eax
1589
        mov     [ecx + WDATA.clientbox.left], eax
1596
        shl     eax, 1
1590
        shl     eax, 1
1597
        neg     eax
1591
        neg     eax
1598
        add     eax, [ecx + WDATA.box.width]
1592
        add     eax, [ecx + WDATA.box.width]
Line 1599... Line 1593...
1599
        inc     eax  ;Leency: as window is created width+1 so client the same
1593
        inc     eax  ;Leency: as window is created width+1 so client the same
1600
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.width], eax
1594
        mov     [ecx + WDATA.clientbox.width], eax
1601
 
1595
 
1602
        movzx   eax, [ecx + WDATA.fl_wstyle]
1596
        movzx   eax, [ecx + WDATA.fl_wstyle]
1603
        and     eax, 0x0F
1597
        and     eax, 0x0F
1604
        push    [eax * 8 + window_topleft + 0]
1598
        push    [eax * 8 + window_topleft + 0]
1605
        mov     eax, [eax * 8 + window_topleft + 4]
1599
        mov     eax, [eax * 8 + window_topleft + 4]
1606
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.top], eax
1600
        mov     [ecx + WDATA.clientbox.top], eax
1607
        neg     eax
1601
        neg     eax
1608
        sub     eax, [esp]
1602
        sub     eax, [esp]
1609
        add     eax, [ecx + WDATA.box.height]
1603
        add     eax, [ecx + WDATA.box.height]
1610
        inc     eax  ;Leency: as window is created height+1 so client the same
1604
        inc     eax  ;Leency: as window is created height+1 so client the same
1611
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.height], eax
1605
        mov     [ecx + WDATA.clientbox.height], eax
1612
        add     esp, 4
1606
        add     esp, 4
1613
        jmp     .exit
1607
        jmp     .exit
1614
;--------------------------------------
1608
;--------------------------------------
1615
align 4
1609
align 4
1616
.whole_window:
1610
.whole_window:
1617
        xor     eax, eax
1611
        xor     eax, eax
1618
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.left], eax
1612
        mov     [ecx + WDATA.clientbox.left], eax
1619
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.top], eax
1613
        mov     [ecx + WDATA.clientbox.top], eax
1620
        mov     eax, [ecx + WDATA.box.width]
1614
        mov     eax, [ecx + WDATA.box.width]
1621
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.width], eax
1615
        mov     [ecx + WDATA.clientbox.width], eax
1622
        mov     eax, [ecx + WDATA.box.height]
1616
        mov     eax, [ecx + WDATA.box.height]
1623
        mov     [edi + SLOT_BASE + APPDATA.wnd_clientbox.height], eax
1617
        mov     [ecx + WDATA.clientbox.height], eax
1624
;--------------------------------------
1618
;--------------------------------------
1625
align 4
1619
align 4
Line 1664... Line 1658...
1664
        push    ecx edi
1658
        push    ecx edi
Line 1665... Line 1659...
1665
 
1659
 
1666
        mov     cl, [edi + WDATA.fl_wstyle]
1660
        mov     cl, [edi + WDATA.fl_wstyle]
Line -... Line 1661...
-
 
1661
        mov     eax, [edi + WDATA.cl_frames]
1667
        mov     eax, [edi + WDATA.cl_frames]
1662
 
1668
 
-
 
1669
        sub     edi, window_data
1663
        mov     esi, [esp]
Line 1670... Line 1664...
1670
        shl     edi, 3
1664
        sub     edi, window_data
1671
        add     edi, SLOT_BASE
1665
        shl     edi, (BSF sizeof.APPDATA - BSF sizeof.WDATA)
1672
 
1666
 
1673
        and     cl, 0x0F
1667
        and     cl, 0x0F
Line 1678... Line 1672...
1678
 
1672
 
1679
        xor     eax, eax
1673
        xor     eax, eax
1680
;--------------------------------------
1674
;--------------------------------------
1681
align 4
1675
align 4
1682
@@:
1676
@@:
Line 1683... Line -...
1683
        mov     [edi + APPDATA.wnd_caption], eax
-
 
1684
 
1677
        mov     [esi + WDATA.caption], eax
1685
        mov     esi, [esp]
1678
 
1686
        add     edi, APPDATA.saved_box
1679
        add     edi, SLOT_BASE + APPDATA.saved_box
1687
        movsd
1680
        movsd
1688
        movsd
1681
        movsd
Line 1864... Line 1857...
1864
  ff_scale dd ?
1857
  ff_scale dd ?
1865
end virtual
1858
end virtual
Line 1866... Line 1859...
1866
 
1859
 
Line 1867... Line -...
1867
        pushad
-
 
1868
 
-
 
1869
        cmp     esi, 1
1860
        pushad
1870
        jz      .check_for_shaped_window
1861
 
-
 
1862
        mov     edi, esi
-
 
1863
        shl     edi, BSF sizeof.WDATA
-
 
1864
 
-
 
1865
        cmp     esi, 1
1871
        mov     edi, esi
1866
        jz      .check_for_shaped_window
1872
        shl     edi, BSF sizeof.WDATA
1867
 
1873
        cmp     [window_data + edi + WDATA.box.width], 0
1868
        cmp     [window_data + edi + WDATA.box.width], 0
1874
        jnz     .check_for_shaped_window
1869
        jnz     .check_for_shaped_window
1875
        cmp     [window_data + edi + WDATA.box.height], 0
1870
        cmp     [window_data + edi + WDATA.box.height], 0
1876
        jz      .exit
1871
        jz      .exit
1877
;--------------------------------------
1872
;--------------------------------------
1878
align 4
-
 
1879
.check_for_shaped_window:
-
 
1880
        mov     edi, esi
-
 
1881
        shl     edi, BSF sizeof.APPDATA
1873
align 4
1882
        add     edi, SLOT_BASE
1874
.check_for_shaped_window:
Line 1883... Line 1875...
1883
        cmp     [edi + APPDATA.wnd_shape], 0
1875
        cmp     [window_data + edi + WDATA.shape], 0
1884
        jne     .shaped_window
1876
        jne     .shaped_window
1885
 
1877
 
Line 1928... Line 1920...
1928
        sub     ecx, eax
1920
        sub     ecx, eax
1929
        sub     edx, ebx
1921
        sub     edx, ebx
1930
        inc     ecx
1922
        inc     ecx
1931
        inc     edx
1923
        inc     edx
Line 1932... Line 1924...
1932
 
1924
 
Line 1933... Line 1925...
1933
        push    [edi + APPDATA.wnd_shape_scale]  ; push scale first -> for loop
1925
        push    [window_data + edi + WDATA.shape_scale]  ; push scale first -> for loop
1934
 
1926
 
1935
        ; get WinMap start  -> ebp
1927
        ; get WinMap start  -> ebp
Line 1936... Line 1928...
1936
        push    eax
1928
        push    eax
1937
        mov     eax, [d_width_calc_area + ebx*4]
1929
        mov     eax, [d_width_calc_area + ebx*4]
1938
 
1930
 
Line 1939... Line 1931...
1939
        add     eax, [esp]
1931
        add     eax, [esp]
1940
        add     eax, [_display.win_map]
1932
        add     eax, [_display.win_map]
Line 1941... Line 1933...
1941
        mov     ebp, eax
1933
        mov     ebp, eax
1942
 
1934
 
1943
        mov     edi, [edi + APPDATA.wnd_shape]
1935
        mov     edi, [window_data + edi + WDATA.shape]
Line 2176... Line 2168...
2176
 
2168
 
Line 2177... Line 2169...
2177
        push    eax ebx edx esi
2169
        push    eax ebx edx esi
2178
 
2170
 
2179
        mov     eax, edi
2171
        mov     eax, edi
Line 2180... Line 2172...
2180
        sub     eax, window_data
2172
        sub     eax, window_data
2181
        shr     eax, 5
2173
        shr     eax, BSF sizeof.WDATA
2182
 
2174
 
2183
        movzx   eax, word[WIN_STACK + eax * 2]  ; get value of the curr process
2175
        movzx   eax, word[WIN_STACK + eax * 2]  ; get value of the curr process
Line 2193... Line 2185...
2193
        cmp     esi, eax
2185
        cmp     esi, eax
2194
        ja      .exit.no_redraw
2186
        ja      .exit.no_redraw
Line 2195... Line 2187...
2195
 
2187
 
2196
        movzx   edx, word[esi]
2188
        movzx   edx, word[esi]
2197
        shl     edx, BSF sizeof.WDATA ; size of TASKDATA and WDATA is 32 bytes
2189
        shl     edx, BSF sizeof.WDATA ; size of TASKDATA and WDATA is 32 bytes
2198
        cmp     byte [SLOT_BASE + edx*8 - sizeof.APPDATA + APPDATA.state], TSTATE_FREE
2190
        cmp     byte [SLOT_BASE + edx*(sizeof.APPDATA/sizeof.WDATA) - sizeof.APPDATA + APPDATA.state], TSTATE_FREE
Line 2199... Line 2191...
2199
        je      .next_window
2191
        je      .next_window
2200
 
2192
 
2201
        mov     eax, [edi + WDATA.box.top]
2193
        mov     eax, [edi + WDATA.box.top]
Line 2248... Line 2240...
2248
        inc     eax
2240
        inc     eax
2249
;--------------------------------------
2241
;--------------------------------------
2250
align 4
2242
align 4
2251
@@:
2243
@@:
2252
        mov     edx, [current_slot_idx]
2244
        mov     edx, [current_slot_idx]
2253
        shl     edx, 5
2245
        shl     edx, BSF sizeof.WDATA
2254
        add     edx, window_data
2246
        add     edx, window_data
2255
        movzx   ebx, [edx + WDATA.fl_wstyle]
2247
        movzx   ebx, [edx + WDATA.fl_wstyle]
2256
        and     bl, 0x0F
2248
        and     bl, 0x0F
2257
        cmp     bl, 3
2249
        cmp     bl, 3
2258
        je      .draw_caption_style_3
2250
        je      .draw_caption_style_3
Line 2285... Line 2277...
2285
;--------------------------------------
2277
;--------------------------------------
2286
align 4
2278
align 4
2287
.2:
2279
.2:
2288
        mov     edi, [current_slot_idx]
2280
        mov     edi, [current_slot_idx]
2289
        shl     edi, BSF sizeof.WDATA
2281
        shl     edi, BSF sizeof.WDATA
2290
        test    [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
2282
        test    [window_data + edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION
2291
        jz      .exit
2283
        jz      .exit
2292
        mov     edx, [edi * 8 + SLOT_BASE + APPDATA.wnd_caption]
2284
        mov     edx, [window_data + edi + WDATA.caption]
2293
        or      edx, edx
2285
        or      edx, edx
2294
        jz      .exit
2286
        jz      .exit
Line 2295... Line 2287...
2295
 
2287
 
2296
        mov     ebp, [edi + window_data + WDATA.box.left - 2]
2288
        mov     ebp, [edi + window_data + WDATA.box.left - 2]
Line 2330... Line 2322...
2330
.dodraw:
2322
.dodraw:
2331
        shr     eax, 3
2323
        shr     eax, 3
2332
        mov     esi, eax
2324
        mov     esi, eax
2333
        add     ebx, ebp
2325
        add     ebx, ebp
2334
        mov     ecx, [common_colours + 16]
2326
        mov     ecx, [common_colours + 16]
2335
        mov     al, [edi*8 + SLOT_BASE + APPDATA.captionEncoding]
2327
        mov     al, [window_data + edi + WDATA.captionEncoding]
2336
        test    al, al
2328
        test    al, al
2337
        jnz     @f
2329
        jnz     @f
2338
        mov     al, 1
2330
        mov     al, 1
2339
        cmp     byte [edx], 4
2331
        cmp     byte [edx], 4
2340
        jnc     @f
2332
        jnc     @f
Line 2461... Line 2453...
2461
align 4
2453
align 4
2462
.next_window:
2454
.next_window:
2463
        movzx   edi, word[WIN_POS + esi * 2]
2455
        movzx   edi, word[WIN_POS + esi * 2]
2464
        shl     edi, BSF sizeof.WDATA         ;size of TASKDATA and WDATA = 32 bytes
2456
        shl     edi, BSF sizeof.WDATA         ;size of TASKDATA and WDATA = 32 bytes
Line 2465... Line 2457...
2465
 
2457
 
2466
        cmp     byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE
2458
        cmp     byte [SLOT_BASE + edi*(sizeof.APPDATA/sizeof.WDATA) + APPDATA.state], TSTATE_FREE
Line 2467... Line 2459...
2467
        je      .skip_window
2459
        je      .skip_window
2468
 
2460
 
2469
        add     edi, window_data
2461
        add     edi, window_data