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 |