75,17 → 75,17 |
test [edi+WDATA.fl_wstate], WSTATE_MINIMIZED |
jnz .not_wnd |
|
mov eax, [edi+WDATA.left] |
mov eax,[edi+WDATA.box.left] |
cmp eax, [esp+RECT.right] |
ja .out_of_bounds |
mov ebx, [edi+WDATA.top] |
mov ebx,[edi+WDATA.box.top] |
cmp ebx, [esp+RECT.bottom] |
ja .out_of_bounds |
mov ecx, [edi+WDATA.width] |
mov ecx,[edi+WDATA.box.width] |
add ecx, eax |
cmp ecx, [esp+RECT.left] |
jb .out_of_bounds |
mov edx, [edi+WDATA.height] |
mov edx,[edi+WDATA.box.height] |
add edx, ebx |
cmp edx, [esp+RECT.top] |
jb .out_of_bounds |
239,9 → 239,9 |
|
mov ecx, esi |
shl ecx, 5 |
mov edx, [window_data+ecx+WDATA.top] |
push [window_data+ecx+WDATA.width] ; for loop - width |
mov ecx, [window_data+ecx+WDATA.left] |
mov edx, [window_data+ecx+WDATA.box.top] |
push [window_data+ecx+WDATA.box.width] ; for loop - width |
mov ecx, [window_data+ecx+WDATA.box.left] |
sub ebx, edx |
sub eax, ecx |
push ebx eax ; for loop - x,y |
513,44 → 513,44 |
test [esi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jz .lp2 |
mov eax,[screen_workarea.left] |
mov [esi+WDATA.left],eax |
mov [esi+WDATA.box.left],eax |
sub eax,[screen_workarea.right] |
neg eax |
mov [esi+WDATA.width],eax |
mov [esi+WDATA.box.width],eax |
mov eax,[screen_workarea.top] |
mov [esi+WDATA.top],eax |
mov [esi+WDATA.box.top],eax |
test [esi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz .lp1 |
sub eax,[screen_workarea.bottom] |
neg eax |
mov [esi+WDATA.height],eax |
mov [esi+WDATA.box.height],eax |
.lp1: add esi,0x20 |
loop @b |
ret |
.lp2: mov eax,[esi+WDATA.left] |
add eax,[esi+WDATA.width] |
.lp2: mov eax,[esi+WDATA.box.left] |
add eax,[esi+WDATA.box.width] |
mov ebx,[0x0000fe00] |
; inc ebx |
cmp eax,ebx |
jle .lp4 |
mov eax,[esi+WDATA.width] |
mov eax,[esi+WDATA.box.width] |
sub eax,ebx |
jle .lp3 |
mov [esi+WDATA.width],ebx |
.lp3: sub ebx,[esi+WDATA.width] |
mov [esi+WDATA.left],ebx |
.lp4: mov eax,[esi+WDATA.top] |
add eax,[esi+WDATA.height] |
mov [esi+WDATA.box.width],ebx |
.lp3: sub ebx,[esi+WDATA.box.width] |
mov [esi+WDATA.box.left],ebx |
.lp4: mov eax,[esi+WDATA.box.top] |
add eax,[esi+WDATA.box.height] |
mov ebx,[0x0000fe04] |
; inc ebx |
cmp eax,ebx |
jle .lp6 |
mov eax,[esi+WDATA.height] |
mov eax,[esi+WDATA.box.height] |
sub eax,ebx |
jle .lp5 |
mov [esi+WDATA.height],ebx |
.lp5: sub ebx,[esi+WDATA.height] |
mov [esi+WDATA.top],ebx |
mov [esi+WDATA.box.height],ebx |
.lp5: sub ebx,[esi+WDATA.box.height] |
mov [esi+WDATA.box.top],ebx |
.lp6: add esi,0x20 |
loop @b |
ret |
633,21 → 633,11 |
|
ret |
|
drawwindow_I: |
|
pushad |
|
mov esi,[edx+24] ; rectangle |
mov eax,[edx+0] |
shl eax,16 |
add eax,[edx+0] |
add eax,[edx+8] |
mov ebx,[edx+04] |
shl ebx,16 |
add ebx,[edx+4] |
add ebx,[edx+12] |
call draw_rectangle |
|
drawwindow_I_caption: |
|
mov ecx,[edx+20] ; grab bar |
push ecx |
mov esi,edx |
654,15 → 644,15 |
mov edx,[esi+04] |
add edx,1 |
mov ebx,[esi+04] |
add ebx,25 |
add ebx,21 |
mov eax,[esi+04] |
add eax,[esi+12] |
cmp ebx,eax |
jb wdsizeok |
jb .wdsizeok |
mov ebx,eax |
wdsizeok: |
.wdsizeok: |
push ebx |
drwi: |
.drwi: |
mov ebx,edx |
shl ebx,16 |
add ebx,edx |
677,26 → 667,46 |
mov ecx,[esi+20] |
and ecx,edx |
cmp ecx,edx |
jnz nofa |
jnz .nofa |
mov ecx,[esi+20] |
sub ecx,0x00040404 |
mov [esi+20],ecx |
and ecx,0x00ffffff |
jmp faj |
nofa: |
jmp .faj |
.nofa: |
mov ecx,[esi+20] |
and ecx,0x00ffffff |
faj: |
.faj: |
pop edx |
mov edi,0 |
call [draw_line] |
inc edx |
cmp edx,[esp] |
jb drwi |
jb .drwi |
add esp,4 |
pop ecx |
mov [esi+20],ecx |
|
ret |
|
|
drawwindow_I: |
|
pushad |
|
mov esi,[edx+24] ; rectangle |
mov eax,[edx+0] |
shl eax,16 |
add eax,[edx+0] |
add eax,[edx+8] |
mov ebx,[edx+04] |
shl ebx,16 |
add ebx,[edx+4] |
add ebx,[edx+12] |
call draw_rectangle |
|
call drawwindow_I_caption |
|
mov edx,[esi+04] ; inside work area |
add edx,21+5 |
mov ebx,[esi+04] |
759,37 → 769,8 |
ret |
|
|
drawwindow_III: |
drawwindow_III_caption: |
|
pushad |
|
mov edi,edx ; RECTANGLE |
mov eax,[edi+0] |
shl eax,16 |
mov ax,[edi+0] |
add ax,[edi+8] |
mov ebx,[edi+4] |
shl ebx,16 |
mov bx,[edi+4] |
add bx,[edi+12] |
mov esi,[edi+24] |
shr esi,1 |
and esi,0x007f7f7f |
push esi |
call draw_rectangle |
mov ecx,3 |
dw3l: |
add eax,1*65536-1 |
add ebx,1*65536-1 |
mov esi,[edi+24] |
call draw_rectangle |
dec ecx |
jnz dw3l |
pop esi |
add eax,1*65536-1 |
add ebx,1*65536-1 |
call draw_rectangle |
|
mov ecx,[edx+20] ; GRAB BAR |
push ecx |
mov esi,edx |
800,11 → 781,11 |
mov eax,[esi+04] |
add eax,[esi+12] |
cmp ebx,eax |
jb wdsizeok2 |
jb .wdsizeok |
mov ebx,eax |
wdsizeok2: |
.wdsizeok: |
push ebx |
drwi2: |
.drwi: |
mov ebx,edx |
shl ebx,16 |
add ebx,edx |
815,13 → 796,13 |
add eax,4*65536-4 |
mov ecx,[esi+20] |
test ecx,0x40000000 |
jz nofa3 |
jz .nofa |
add ecx,0x040404 |
nofa3: |
.nofa: |
test ecx,0x80000000 |
jz nofa2 |
jz .nofa2 |
sub ecx,0x040404 |
nofa2: |
.nofa2: |
mov [esi+20],ecx |
and ecx,0xffffff |
xor edi, edi |
828,11 → 809,47 |
call [draw_line] |
inc edx |
cmp edx,[esp] |
jb drwi2 |
jb .drwi |
add esp,4 |
pop ecx |
mov [esi+20],ecx |
|
ret |
|
|
drawwindow_III: |
|
pushad |
|
mov edi,edx ; RECTANGLE |
mov eax,[edi+0] |
shl eax,16 |
mov ax,[edi+0] |
add ax,[edi+8] |
mov ebx,[edi+4] |
shl ebx,16 |
mov bx,[edi+4] |
add bx,[edi+12] |
mov esi,[edi+24] |
shr esi,1 |
and esi,0x007f7f7f |
push esi |
call draw_rectangle |
mov ecx,3 |
dw3l: |
add eax,1*65536-1 |
add ebx,1*65536-1 |
mov esi,[edi+24] |
call draw_rectangle |
dec ecx |
jnz dw3l |
pop esi |
add eax,1*65536-1 |
add ebx,1*65536-1 |
call draw_rectangle |
|
call drawwindow_III_caption |
|
mov edx,[esi+04] ; WORK AREA |
add edx,21+5 |
mov ebx,[esi+04] |
1060,15 → 1077,15 |
or [eax+WDATA.fl_wstate], WSTATE_MINIMIZED |
mov edi, eax |
;call calculatescreen |
mov eax, [edi+WDATA.left] |
mov eax, [edi+WDATA.box.left] |
mov [dlx], eax |
mov ecx, eax |
add ecx, [edi+WDATA.width] |
add ecx, [edi+WDATA.box.width] |
mov [dlxe], ecx |
mov ebx, [edi+WDATA.top] |
mov ebx, [edi+WDATA.box.top] |
mov [dly], ebx |
mov edx, ebx |
add edx, [edi+WDATA.height] |
add edx, [edi+WDATA.box.height] |
mov [dlye], edx |
call calculatescreen |
xor esi, esi |
1093,21 → 1110,21 |
and [edi+WDATA.fl_wstate], not WSTATE_MINIMIZED |
cmp eax, [0x3004] ; the uppermost window |
jnz .no_uppermost |
mov eax, [edi+WDATA.left] |
mov ebx, [edi+WDATA.top] |
mov eax, [edi+WDATA.box.left] |
mov ebx, [edi+WDATA.box.top] |
mov ecx, eax |
mov edx, ebx |
add ecx, [edi+WDATA.width] |
add edx, [edi+WDATA.height] |
add ecx, [edi+WDATA.box.width] |
add edx, [edi+WDATA.box.height] |
call setscreen |
jmp .done |
.no_uppermost: |
mov eax, [edi+WDATA.left] |
mov ebx, [edi+WDATA.top] |
mov eax, [edi+WDATA.box.left] |
mov ebx, [edi+WDATA.box.top] |
mov ecx, eax |
mov edx, ebx |
add ecx, [edi+WDATA.width] |
add edx, [edi+WDATA.height] |
add ecx, [edi+WDATA.box.width] |
add edx, [edi+WDATA.box.height] |
call calculatescreen |
.done: |
mov [0xfff4],byte 0 ; no mouse under |
1480,7 → 1497,7 |
jz @f |
mov eax,[screen_workarea.bottom] |
sub eax,[screen_workarea.top] |
@@: mov [edi+WDATA.height],eax |
@@: mov [edi+WDATA.box.height],eax |
|
no_window_shade: |
|
1493,22 → 1510,22 |
jnz restore_from_fullscreen |
or [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
mov eax,[screen_workarea.left] |
mov [edi+WDATA.left],eax |
mov [edi+WDATA.box.left],eax |
sub eax,[screen_workarea.right] |
neg eax |
mov [edi+WDATA.width],eax |
mov [edi+WDATA.box.width],eax |
mov eax,[screen_workarea.top] |
mov [edi+WDATA.top],eax |
mov [edi+WDATA.box.top],eax |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jnz @f |
sub eax,[screen_workarea.bottom] |
neg eax |
mov [edi+WDATA.height],eax |
mov [edi+WDATA.box.height],eax |
@@: |
jmp no_fullscreen_restore |
restore_from_fullscreen: |
and [edi+WDATA.fl_wstate],not WSTATE_MAXIMIZED |
push [edi+WDATA.height] |
push [edi+WDATA.box.height] |
push edi ; restore |
lea esi, [edx + 0x90] |
mov ecx,4 |
1518,7 → 1535,7 |
pop eax |
test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
jz @f |
mov [edi+WDATA.height],eax |
mov [edi+WDATA.box.height],eax |
@@: |
|
no_fullscreen_restore: |