169,7 → 169,7 |
inc edx |
|
; get WinMap start |
mov edi, [0xFE00] ; screen_sx |
mov edi, [ScreenWidth] ; screen_sx |
inc edi |
imul edi, ebx |
add edi, eax |
189,7 → 189,7 |
|
pop edx |
pop ecx |
add edi, [0xFE00] |
add edi, [ScreenWidth] |
inc edi |
sub edi, ecx |
dec edx |
230,7 → 230,7 |
|
; get WinMap start -> ebp |
push eax |
mov eax, [0xFE00] ; screen_sx |
mov eax, [ScreenWidth] ; screen_sx |
inc eax |
imul eax, ebx |
add eax, [esp] |
292,7 → 292,7 |
jb .ff_new_x |
sub ebp, [ff_xsz] |
add ebp, [ff_x] |
add ebp, [0xFE00] ; screen.x |
add ebp, [ScreenWidth] ; screen.x |
inc ebp |
inc ebx |
cmp ebx, [ff_ysz] |
349,9 → 349,9 |
redraw_screen_direct: |
mov [dlx],dword 0 |
mov [dly],dword 0 |
mov eax,[0xfe00] |
mov eax,[ScreenWidth] |
mov [dlxe],eax |
mov eax,[0xfe04] |
mov eax,[ScreenHeight] |
mov [dlye],eax |
mov eax,window_data |
call redrawscreen |
427,10 → 427,10 |
movsx ebx,word[esp+16] |
cmp eax,ebx |
jge .lp1 |
or eax,eax;[0xFE00] |
or eax,eax;[ScreenWidth] |
jl @f |
mov [screen_workarea.left],eax |
@@: cmp ebx,[0xFE00] |
@@: cmp ebx,[ScreenWidth] |
jg .lp1 |
mov [screen_workarea.right],ebx |
.lp1: movsx eax,word[esp+24+2] |
440,14 → 440,14 |
or eax,eax;[0xFE04] |
jl @f |
mov [screen_workarea.top],eax |
@@: cmp ebx,[0xFE04] |
@@: cmp ebx,[ScreenHeight] |
jg .lp2 |
mov [screen_workarea.bottom],ebx |
.lp2: call repos_windows |
mov eax, 0 |
mov ebx, 0 |
mov ecx, [0xfe00] |
mov edx, [0xfe04] |
mov ecx, [ScreenWidth] |
mov edx, [ScreenHeight] |
call calculatescreen |
; jmp redraw_screen_direct |
.exit: |
498,8 → 498,8 |
pushad |
mov eax, 0 |
mov ebx, 0 |
mov ecx, [0xfe00] |
mov edx, [0xfe04] |
mov ecx, [ScreenWidth] |
mov edx, [ScreenHeight] |
call calculatescreen |
popad |
mov dword[esp+32+36],0 |
517,7 → 517,7 |
repos_windows: |
mov ecx,[TASK_COUNT] |
mov edi,0x20*2 |
mov byte[0x0000fff0],1 |
mov byte[REDRAW_BACKGROUND],1 |
dec ecx |
jge @f |
ret |
543,7 → 543,7 |
ret |
.lp2: mov eax,[edi+WDATA.box.left] |
add eax,[edi+WDATA.box.width] |
mov ebx,[0x0000fe00] |
mov ebx,[ScreenWidth] |
; inc ebx |
cmp eax,ebx |
jle .lp4 |
555,7 → 555,7 |
mov [edi+WDATA.box.left],ebx |
.lp4: mov eax,[edi+WDATA.box.top] |
add eax,[edi+WDATA.box.height] |
mov ebx,[0x0000fe04] |
mov ebx,[ScreenHeight] |
; inc ebx |
cmp eax,ebx |
jle .lp6 |
586,7 → 586,7 |
|
mov esi,ecx ; check x pos |
add esi,eax |
cmp esi,[0xfe00] |
cmp esi,[ScreenWidth] |
jbe x_pos_ok |
mov [edi+WDATA.box.left],dword 0 |
xor eax, eax |
594,7 → 594,7 |
|
mov esi,edx ; check y pos |
add esi,ebx |
cmp esi,[0xfe04] |
cmp esi,[ScreenHeight] |
jbe y_pos_ok |
mov [edi+WDATA.box.top],dword 0 |
mov ebx,0 |
602,17 → 602,17 |
|
mov esi,ecx ; check x size |
add esi,eax |
cmp esi,[0xfe00] |
cmp esi,[ScreenWidth] |
jbe x_size_ok |
mov ecx,[0xfe00] |
mov ecx,[ScreenWidth] |
mov [edi+WDATA.box.width],ecx |
x_size_ok: |
|
mov esi,edx ; check y size |
add esi,ebx |
cmp esi,[0xfe04] |
cmp esi,[ScreenHeight] |
jbe y_size_ok |
mov edx,[0xfe04] |
mov edx,[ScreenHeight] |
mov [edi+WDATA.box.height],edx |
y_size_ok: |
|
634,8 → 634,8 |
cmp [new_window_starting],eax |
jb swml1 |
|
mov [0xfff4],byte 0 ; no mouse background |
mov [0xfff5],byte 0 ; draw mouse |
mov [MOUSE_BACKGROUND],byte 0 ; no mouse background |
mov [DONT_DRAW_MOUSE],byte 0 ; draw mouse |
|
mov [new_window_starting],eax |
|
958,8 → 958,8 |
mov [ebx*2 + WIN_POS], si |
jmp waloop2 |
wacont2: |
mov [0xf400], byte 0 ; empty keyboard buffer |
mov [0xf500], byte 0 ; empty button buffer |
mov [KEY_COUNT], byte 0 ; empty keyboard buffer |
mov [BTN_COUNT], byte 0 ; empty button buffer |
popad |
ret |
|
1053,7 → 1053,7 |
jz .do_not_draw |
|
popad |
mov [0xfb44], byte 1 ; do draw mouse |
mov [MOUSE_DOWN], byte 1 ; do draw mouse |
call windowactivate |
|
; update screen info |
1078,7 → 1078,7 |
popad |
|
mov [edi + WDATA.fl_redraw], 1 ; redraw flag for app |
mov [0xfb44],byte 0 ; mouse down checks |
mov [MOUSE_DOWN],byte 0 ; mouse down checks |
|
ret |
|
1087,9 → 1087,9 |
popad |
|
call windowactivate |
mov [0xfb44],byte 0 ; mouse down checks |
mov [0xfff4],byte 0 ; no mouse background |
mov [0xfff5],byte 0 ; draw mouse |
mov [MOUSE_DOWN],byte 0 ; mouse down checks |
mov [MOUSE_BACKGROUND],byte 0 ; no mouse background |
mov [DONT_DRAW_MOUSE],byte 0 ; draw mouse |
ret |
|
|
1156,7 → 1156,7 |
add edx, [edi+WDATA.box.height] |
call calculatescreen |
.done: |
mov [0xfff4],byte 0 ; no mouse under |
mov [MOUSE_BACKGROUND],byte 0 ; no mouse under |
.skip_redrawings: |
popfd |
ret |
1186,7 → 1186,7 |
.continue: |
.no_minimizing: |
|
cmp [0xfb40],byte 0 ; mouse buttons pressed ? |
cmp [BTN_DOWN],byte 0 ; mouse buttons pressed ? |
jne .mouse_buttons_pressed |
popad |
ret |
1212,8 → 1212,8 |
test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
jnz cwloop |
|
movzx eax, word [0xfb0a] |
movzx ebx, word [0xfb0c] |
movzx eax, word [MOUSE_X] |
movzx ebx, word [MOUSE_Y] |
|
cmp ecx, eax |
jae cwloop |
1292,7 → 1292,7 |
mov [latest_window_touch], ecx |
mov [latest_window_touch_delta], edx |
|
mov cl, [0xfb40] ; save for shade check |
mov cl, [BTN_DOWN] ; save for shade check |
mov [do_resize], cl |
no_emulation_righ_button: |
mov ecx, [edi + WDATA.box.left] |
1312,8 → 1312,8 |
sub eax, ecx |
sub ebx, edx |
|
mov esi, [0xfb0a] |
mov [0xf300], esi |
mov esi, [MOUSE_X] |
mov [WIN_TEMP_XY], esi |
|
pushad ; wait for putimages to finish |
; mov eax,5 |
1340,19 → 1340,19 |
call drawwindowframes |
|
mov [reposition],0 |
mov [0xfb44],byte 1 ; no reaction to mouse up/down |
mov [MOUSE_DOWN],byte 1 ; no reaction to mouse up/down |
|
; move window |
|
newchm: |
|
mov [0xfff5],byte 1 |
mov [DONT_DRAW_MOUSE],byte 1 |
|
call checkidle |
|
call checkVga_N13 |
|
mov [0xfff4],byte 0 |
mov [MOUSE_BACKGROUND],byte 0 |
|
call [draw_pointer] |
|
1360,12 → 1360,12 |
call stack_handler |
popad |
|
mov esi,[0xf300] |
cmp esi,[0xfb0a] |
mov esi,[WIN_TEMP_XY] |
cmp esi,[MOUSE_X] |
je cwb |
|
mov cx,[0xfb0a] |
mov dx,[0xfb0c] |
mov cx,[MOUSE_X] |
mov dx,[MOUSE_Y] |
sub cx,ax |
sub dx,bx |
|
1374,8 → 1374,8 |
|
call drawwindowframes |
|
mov ax,[0xfe00] |
mov bx,[0xfe04] |
mov ax,[ScreenWidth] |
mov bx,[ScreenHeight] |
|
cmp [do_resize_from_corner],1 |
je no_new_position |
1415,7 → 1415,7 |
;add edx,0x80000 ; process base at 0x80000+ |
lea edx, [SLOT_BASE + edx*8] |
|
movzx eax,word [0xfb0a] |
movzx eax,word [MOUSE_X] |
cmp eax,[edi + WDATA.box.left] |
jb nnepx |
sub eax,[edi + WDATA.box.left] |
1428,7 → 1428,7 |
|
call get_rolledup_height |
mov ebx,eax |
movzx eax,word [0xfb0c] |
movzx eax,word [MOUSE_Y] |
cmp eax,[edi + WDATA.box.top] |
jb nnepy |
sub eax,[edi + WDATA.box.top] |
1448,14 → 1448,14 |
pop ax |
call drawwindowframes |
|
mov esi,[0xfb0a] |
mov [0xf300],esi |
mov esi,[MOUSE_X] |
mov [WIN_TEMP_XY],esi |
|
cwb: |
cmp [0xfb40],byte 0 |
cmp [BTN_DOWN],byte 0 |
jne newchm |
; new position done |
mov [0xfff5],byte 1 |
mov [DONT_DRAW_MOUSE],byte 1 |
mov cl,0 |
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
jnz @f |
1566,16 → 1566,16 |
|
mov eax,[edi+WDATA.box.top] ; check Y inside screen |
add eax,[edi+WDATA.box.height] |
cmp eax,[0xfe04] |
cmp eax,[ScreenHeight] |
jbe no_window_sizing |
mov eax,[edi+WDATA.box.left] ; check X inside screen |
add eax,[edi+WDATA.box.width] |
cmp eax,[0xfe00] |
cmp eax,[ScreenWidth] |
jbe no_window_sizing |
mov eax,[0xfe00] |
mov eax,[ScreenWidth] |
sub eax,[edi+WDATA.box.width] |
mov [edi+WDATA.box.left],eax |
mov eax,[0xfe04] |
mov eax,[ScreenHeight] |
sub eax,[edi+WDATA.box.height] |
mov [edi+WDATA.box.top],eax |
call set_window_clientbox |
1586,7 → 1586,7 |
cmp [reposition],0 |
je retwm |
|
mov [0xfff5],byte 1 ; no mouse |
mov [DONT_DRAW_MOUSE],byte 1 ; no mouse |
|
|
push eax ebx ecx edx |
1615,7 → 1615,7 |
|
mov ecx,100 ; wait to avoid mouse residuals |
waitre2: |
mov [0xfff5],byte 1 |
mov [DONT_DRAW_MOUSE],byte 1 |
call checkidle |
cmp [edi+WDATA.fl_redraw],0 |
jz retwm |
1623,9 → 1623,9 |
|
retwm: |
|
mov [0xfff5],byte 0 ; mouse pointer |
mov [0xfff4],byte 0 ; no mouse under |
mov [0xfb44],byte 0 ; react to mouse up/down |
mov [DONT_DRAW_MOUSE],byte 0 ; mouse pointer |
mov [MOUSE_BACKGROUND],byte 0 ; no mouse under |
mov [MOUSE_DOWN],byte 0 ; react to mouse up/down |
|
mov esi,window_moved |
call sys_msg_board_str |