Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 114 → Rev 115

/kernel/trunk/gui/window.inc
68,7 → 68,7
movzx edi, word [0xC400 + esi * 2]
shl edi, 5
 
cmp [0x3000+edi+0xa], byte 9
cmp [0x3000+edi+TASKDATA.state], byte 9
je .not_wnd
 
add edi, window_data
147,8 → 147,8
pushad
mov edi, esi ;;;word [esi*2+0xc400]
shl edi, 8
add edi, 0x80000+0x80 ; address of random shaped window area
cmp [edi], dword 0
add edi, 0x80000 ; address of random shaped window area
cmp [edi+APPDATA.wnd_shape], dword 0
jne .free_form
 
; get x&y size
214,7 → 214,7
inc ecx
inc edx
 
push dword [edi+4] ; push scale first -> for loop
push dword [edi+APPDATA.wnd_shape_scale] ; push scale first -> for loop
 
; get WinMap start -> ebp
push eax
225,7 → 225,7
add eax, WinMapAddress
mov ebp, eax
 
mov edi, [edi]
mov edi, [edi+APPDATA.wnd_shape]
pop eax
 
; eax = x_start
364,7 → 364,7
jne no_com_colours
mov [windowtypechanged],dword 1
mov esi,[0x3010]
add esi,0x10
add esi,TASKDATA.mem_start
add ebx,[esi]
mov esi,ebx
mov edi,common_colours
378,7 → 378,7
cmp eax,3 ; get common window colours
jne no_get_com
mov esi,[0x3010]
add esi,0x10
add esi,TASKDATA.mem_start
add ebx,[esi]
mov edi,ebx
mov esi,common_colours
457,7 → 457,7
jne no_set_skin
mov eax,ebx
mov edi,[0x3010]
add ebx,[edi+0x10] ; abs start of info block
add ebx,[edi+TASKDATA.mem_start] ; abs start of info block
pushd [ebx+0] [ebx+4] [ebx+8] [ebx+12]
mov dword[ebx+0],0 ; read
mov dword[ebx+4],0 ; from the beginning
567,16 → 567,16
 
pushad ; window inside screen ?
 
movzx eax,word [edi+0]
movzx ebx,word [edi+4]
movzx ecx,word [edi+8]
movzx edx,word [edi+12]
movzx eax,word [edi+WDATA.box.left]
movzx ebx,word [edi+WDATA.box.top]
movzx ecx,word [edi+WDATA.box.width]
movzx edx,word [edi+WDATA.box.height]
 
mov esi,ecx ; check x pos
add esi,eax
cmp esi,[0xfe00]
jbe x_pos_ok
mov [edi+0],dword 0
mov [edi+WDATA.box.left],dword 0
xor eax, eax
x_pos_ok:
 
584,7 → 584,7
add esi,ebx
cmp esi,[0xfe04]
jbe y_pos_ok
mov [edi+4],dword 0
mov [edi+WDATA.box.top],dword 0
mov ebx,0
y_pos_ok:
 
593,7 → 593,7
cmp esi,[0xfe00]
jbe x_size_ok
mov ecx,[0xfe00]
mov [edi+8],ecx
mov [edi+WDATA.box.width],ecx
x_size_ok:
 
mov esi,edx ; check y size
601,7 → 601,7
cmp esi,[0xfe04]
jbe y_size_ok
mov edx,[0xfe04]
mov [edi+12],edx
mov [edi+WDATA.box.height],edx
y_size_ok:
 
popad
618,7 → 618,7
 
push eax
 
mov eax,[timer_ticks] ;[0xfdf0]
mov eax,[timer_ticks]
cmp [new_window_starting],eax
jb swml1
 
638,15 → 638,15
 
drawwindow_I_caption:
 
mov ecx,[edx+20] ; grab bar
mov ecx,[edx+WDATA.cl_titlebar] ; grab bar
push ecx
mov esi,edx
mov edx,[esi+04]
mov edx,[esi+WDATA.box.top]
add edx,1
mov ebx,[esi+04]
mov ebx,[esi+WDATA.box.top]
add ebx,21
mov eax,[esi+04]
add eax,[esi+12]
mov eax,[esi+WDATA.box.top]
add eax,[esi+WDATA.box.height]
cmp ebx,eax
jb .wdsizeok
mov ebx,eax
656,25 → 656,25
mov ebx,edx
shl ebx,16
add ebx,edx
mov eax,[esi+00]
mov eax,[esi+WDATA.box.left]
inc eax
shl eax,16
add eax,[esi+00]
add eax,[esi+8]
add eax,[esi+WDATA.box.left]
add eax,[esi+WDATA.box.width]
sub eax,1
push edx
mov edx,0x80000000
mov ecx,[esi+20]
mov ecx,[esi+WDATA.cl_titlebar]
and ecx,edx
cmp ecx,edx
jnz .nofa
mov ecx,[esi+20]
mov ecx,[esi+WDATA.cl_titlebar]
sub ecx,0x00040404
mov [esi+20],ecx
mov [esi+WDATA.cl_titlebar],ecx
and ecx,0x00ffffff
jmp .faj
.nofa:
mov ecx,[esi+20]
mov ecx,[esi+WDATA.cl_titlebar]
and ecx,0x00ffffff
.faj:
pop edx
685,7 → 685,7
jb .drwi
add esp,4
pop ecx
mov [esi+20],ecx
mov [esi+WDATA.cl_titlebar],ecx
 
ret
 
694,30 → 694,30
 
pushad
 
mov esi,[edx+24] ; rectangle
mov eax,[edx+0]
mov esi,[edx+WDATA.cl_frames] ; rectangle
mov eax,[edx+WDATA.box.left]
shl eax,16
add eax,[edx+0]
add eax,[edx+8]
mov ebx,[edx+04]
add eax,[edx+WDATA.box.left]
add eax,[edx+WDATA.box.width]
mov ebx,[edx+WDATA.box.top]
shl ebx,16
add ebx,[edx+4]
add ebx,[edx+12]
add ebx,[edx+WDATA.box.top]
add ebx,[edx+WDATA.box.height]
call draw_rectangle
 
call drawwindow_I_caption
 
mov edx,[esi+04] ; inside work area
mov edx,[esi+WDATA.box.top] ; inside work area
add edx,21+5
mov ebx,[esi+04]
add ebx,[esi+12]
mov ebx,[esi+WDATA.box.top]
add ebx,[esi+WDATA.box.height]
cmp edx,ebx
jg noinside
mov eax,1
mov ebx,21
mov ecx,[esi+8]
mov edx,[esi+12]
mov edi,[esi+16]
mov ecx,[esi+WDATA.box.width]
mov edx,[esi+WDATA.box.height]
mov edi,[esi+WDATA.cl_workarea]
call [drawbar]
noinside:
 
771,15 → 771,15
 
drawwindow_III_caption:
 
mov ecx,[edx+20] ; GRAB BAR
mov ecx,[edx+WDATA.cl_titlebar] ; GRAB BAR
push ecx
mov esi,edx
mov edx,[esi+04]
mov edx,[esi+WDATA.box.top]
add edx,4
mov ebx,[esi+04]
mov ebx,[esi+WDATA.box.top]
add ebx,20
mov eax,[esi+04]
add eax,[esi+12]
mov eax,[esi+WDATA.box.top]
add eax,[esi+WDATA.box.height]
cmp ebx,eax
jb .wdsizeok
mov ebx,eax
789,12 → 789,12
mov ebx,edx
shl ebx,16
add ebx,edx
mov eax,[esi+00]
mov eax,[esi+WDATA.box.left]
shl eax,16
add eax,[esi+00]
add eax,[esi+8]
add eax,[esi+WDATA.box.left]
add eax,[esi+WDATA.box.width]
add eax,4*65536-4
mov ecx,[esi+20]
mov ecx,[esi+WDATA.cl_titlebar]
test ecx,0x40000000
jz .nofa
add ecx,0x040404
803,7 → 803,7
jz .nofa2
sub ecx,0x040404
.nofa2:
mov [esi+20],ecx
mov [esi+WDATA.cl_titlebar],ecx
and ecx,0xffffff
xor edi, edi
call [draw_line]
812,7 → 812,7
jb .drwi
add esp,4
pop ecx
mov [esi+20],ecx
mov [esi+WDATA.cl_titlebar],ecx
 
ret
 
822,15 → 822,15
pushad
 
mov edi,edx ; RECTANGLE
mov eax,[edi+0]
mov eax,[edi+WDATA.box.left]
shl eax,16
mov ax,[edi+0]
add ax,[edi+8]
mov ebx,[edi+4]
mov ax, word [edi+WDATA.box.left]
add ax, word [edi+WDATA.box.width]
mov ebx,[edi+WDATA.box.top]
shl ebx,16
mov bx,[edi+4]
add bx,[edi+12]
mov esi,[edi+24]
mov bx, word [edi+WDATA.box.top]
add bx, word [edi+WDATA.box.height]
mov esi,[edi+WDATA.cl_frames]
shr esi,1
and esi,0x007f7f7f
push esi
839,7 → 839,7
dw3l:
add eax,1*65536-1
add ebx,1*65536-1
mov esi,[edi+24]
mov esi,[edi+WDATA.cl_frames]
call draw_rectangle
dec ecx
jnz dw3l
850,19 → 850,19
 
call drawwindow_III_caption
 
mov edx,[esi+04] ; WORK AREA
mov edx,[esi+WDATA.box.top] ; WORK AREA
add edx,21+5
mov ebx,[esi+04]
add ebx,[esi+12]
mov ebx,[esi+WDATA.box.top]
add ebx,[esi+WDATA.box.height]
cmp edx,ebx
jg noinside2
mov eax,5
mov ebx,20
mov ecx,[esi+8]
mov edx,[esi+12]
mov ecx,[esi+WDATA.box.width]
mov edx,[esi+WDATA.box.height]
sub ecx,4
sub edx,4
mov edi,[esi+16]
mov edi,[esi+WDATA.cl_workarea]
call [drawbar]
noinside2:
 
971,31 → 971,31
 
movzx eax, word [esi]
shl eax, 5
cmp [0x3000 + eax + 0xa], byte 9
cmp [0x3000 + eax + TASKDATA.state], byte 9
je .new_check ; skip dead windows
 
lea esi, [eax+window_data]
 
mov ebx, [edi+4] ; y0
mov edx, [edi+12]
mov ebx, [edi+WDATA.box.top] ; y0
mov edx, [edi+WDATA.box.height]
add edx, ebx ; y0e
 
mov ecx, [esi+4] ; y ; y check
mov ecx, [esi+WDATA.box.top] ; y ; y check
cmp ecx, edx
jae .new_check ; y < y0e
mov eax, [esi+12]
mov eax, [esi+WDATA.box.height]
add ecx, eax ; ye
cmp ebx, ecx ; y0 >= ye
ja .new_check
 
mov eax, [edi+0] ; x0
mov ecx, [edi+8]
mov eax, [edi+WDATA.box.left] ; x0
mov ecx, [edi+WDATA.box.width]
add ecx, eax ; x0e
 
mov edx, [esi+0] ; x ; x check
mov edx, [esi+WDATA.box.left] ; x ; x check
cmp edx, ecx
jae .new_check ; x < x0e
mov ecx, [esi+8]
mov ecx, [esi+WDATA.box.width]
add edx, ecx
cmp eax, edx
ja .new_check
1035,10 → 1035,10
add esi, window_data
 
; coordinates of the upper window
mov eax, [esi+00] ; cx
mov ebx, [esi+04] ; cy
mov ecx, [esi+08] ; sx
mov edx, [esi+12] ; sy
mov eax, [esi + WDATA.box.left] ; cx
mov ebx, [esi + WDATA.box.top] ; cy
mov ecx, [esi + WDATA.box.width] ; sx
mov edx, [esi + WDATA.box.height] ; sy
 
add ecx, eax ; ecx = x_end
add edx, ebx ; edx = y_end
1048,7 → 1048,7
call setscreen
popad
 
mov [edi+31],byte 1 ; redraw flag for app
mov [edi + WDATA.fl_redraw], 1 ; redraw flag for app
mov [0xfb44],byte 0 ; mouse down checks
 
ret
1175,8 → 1175,8
shl edi, 5
add edi, window_data
; mov edi, ebx
mov ecx, [edi+0]
mov edx, [edi+4]
mov ecx, [edi + WDATA.box.left]
mov edx, [edi + WDATA.box.top]
 
mov eax,ecx
mov ebx,edx
1190,8 → 1190,8
jae cwloop
cmp edx, ebx
jae cwloop
add ecx, [edi+8]
add edx, [edi+12]
add ecx, [edi + WDATA.box.width]
add edx, [edi + WDATA.box.height]
cmp eax, ecx
jae cwloop
cmp ebx, edx
1218,7 → 1218,7
popad
 
; Check for user enabled fixed window
mov edx, [edi+0x14]
mov edx, [edi + WDATA.cl_titlebar]
and edx, 0x0f000000
cmp edx, 0x01000000
jne .window_move_enabled_for_user
1230,13 → 1230,13
jnz .no_resize_2
 
mov [do_resize_from_corner],byte 0 ; resize for skinned window
mov edx, [edi+0x10]
mov edx, [edi + WDATA.cl_workarea]
and edx, 0x0f000000
cmp edx, 0x02000000
jb .no_resize_2 ; not type 2 wnd
 
mov edx, [edi+4]
add edx, [edi+12]
mov edx, [edi + WDATA.box.top]
add edx, [edi + WDATA.box.height]
sub edx, 6 ; edx = y_end - 6
cmp ebx, edx ; ebx = mouse_y
jb .no_resize_2
1246,7 → 1246,7
 
push eax
call get_titlebar_height
add eax,[edi+4]
add eax,[edi + WDATA.box.top]
cmp ebx,eax
pop eax
jae .exit
1267,15 → 1267,15
mov cl, [0xfb40] ; save for shade check
mov [do_resize], cl
no_emulation_righ_button:
mov ecx, [edi+0]
mov edx, [edi+4]
mov ecx, [edi + WDATA.box.left]
mov edx, [edi + WDATA.box.top]
 
push eax ecx edx
mov [dlx], ecx ; save for drawlimits
mov [dly], edx
mov eax, [edi+8]
mov eax, [edi + WDATA.box.width]
add ecx, eax
mov eax, [edi+12]
mov eax, [edi + WDATA.box.height]
add edx, eax
mov [dlxe], ecx
mov [dlye], edx
1290,22 → 1290,22
pushad ; wait for putimages to finish
; mov eax,5
; call delay_hs
mov eax,[edi+0]
mov eax,[edi + WDATA.box.left]
mov [npx],eax
mov eax,[edi+4]
mov eax,[edi + WDATA.box.top]
mov [npy],eax
popad
 
push eax ; save old coordinates
mov ax,[edi+00]
mov word [oldc+00],ax
mov ax,[edi+04]
mov word [oldc+04],ax
mov ax,[edi+8]
mov word [oldc+8],ax
mov ax, word [edi + WDATA.box.left]
mov word [oldc+BOX.left],ax
mov ax, word [edi + WDATA.box.top]
mov word [oldc+BOX.top],ax
mov ax, word [edi + WDATA.box.width]
mov word [oldc+BOX.width],ax
mov word [npxe],ax
mov ax,[edi+12]
mov word [oldc+12],ax
mov ax, word [edi + WDATA.box.height]
mov word [oldc+BOX.height],ax
mov word [npye],ax
pop eax
 
1388,14 → 1388,15
 
mov edx,edi
sub edx,window_data
shr edx,5
shl edx,8
add edx,0x80000 ; process base at 0x80000+
;shr edx,5
;shl edx,8
;add edx,0x80000 ; process base at 0x80000+
lea edx, [0x80000 + edx*8]
 
movzx eax,word [0xfb0a]
cmp eax,[edi+0]
cmp eax,[edi + WDATA.box.left]
jb nnepx
sub eax,[edi+0]
sub eax,[edi + WDATA.box.left]
cmp eax,32 ; [edx+0x90+8]
jge nnepx2
mov eax,32 ; [edx+0x90+8]
1406,9 → 1407,9
call get_rolledup_height
mov ebx,eax
movzx eax,word [0xfb0c]
cmp eax,[edi+4]
cmp eax,[edi + WDATA.box.top]
jb nnepy
sub eax,[edi+4]
sub eax,[edi + WDATA.box.top]
cmp eax,ebx ; [edx+0x90+12]
jge nnepy2
mov eax,ebx ; [edx+0x90+12]
1443,13 → 1444,13
call drawwindowframes
 
mov eax,[npx]
mov [edi+0],eax
mov [edi + WDATA.box.left],eax
mov eax,[npy]
mov [edi+4],eax
mov [edi + WDATA.box.top],eax
mov eax,[npxe]
mov [edi+8],eax
mov [edi + WDATA.box.width],eax
mov eax,[npye]
mov [edi+12],eax
mov [edi + WDATA.box.height],eax
 
@@: mov [reposition],cl
 
1464,7 → 1465,7
@@: sub edi,window_data
shr edi,5
shl edi,8
add edi,0x80000+0x90
add edi,0x80000+APPDATA.saved_box
cld
rep movsd
pop ecx edi esi
1492,7 → 1493,7
jmp @f
wnd_rolldown:
and [edi+WDATA.fl_wstate],not WSTATE_ROLLEDUP
mov eax,[edx+0x90+BOX.height]
mov eax,[edx + APPDATA.saved_box.height] ; 0x90+BOX.height
test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED
jz @f
mov eax,[screen_workarea.bottom]
1527,7 → 1528,7
and [edi+WDATA.fl_wstate],not WSTATE_MAXIMIZED
push [edi+WDATA.box.height]
push edi ; restore
lea esi, [edx + 0x90]
lea esi, [edx + APPDATA.saved_box]
mov ecx,4
cld
rep movsd
1540,20 → 1541,20
 
no_fullscreen_restore:
 
mov eax,[edi+4] ; check Y inside screen
add eax,[edi+12]
mov eax,[edi+WDATA.box.top] ; check Y inside screen
add eax,[edi+WDATA.box.height]
cmp eax,[0xfe04]
jbe no_window_sizing
mov eax,[edi+0] ; check X inside screen
add eax,[edi+8]
mov eax,[edi+WDATA.box.left] ; check X inside screen
add eax,[edi+WDATA.box.width]
cmp eax,[0xfe00]
jbe no_window_sizing
mov eax,[0xfe00]
sub eax,[edi+8]
mov [edi+0],eax
sub eax,[edi+WDATA.box.width]
mov [edi+WDATA.box.left],eax
mov eax,[0xfe04]
sub eax,[edi+12]
mov [edi+4],eax
sub eax,[edi+WDATA.box.height]
mov [edi+WDATA.box.top],eax
no_window_sizing:
 
popad
1565,18 → 1566,18
 
 
push eax ebx ecx edx
mov eax,[edi+00]
mov ebx,[edi+04]
mov ecx,[edi+8]
mov edx,[edi+12]
mov eax,[edi+WDATA.box.left]
mov ebx,[edi+WDATA.box.top]
mov ecx,[edi+WDATA.box.width]
mov edx,[edi+WDATA.box.height]
add ecx,eax
add edx,ebx
call calculatescreen
 
mov eax,[oldc+00]
mov ebx,[oldc+04]
mov ecx,[oldc+8]
mov edx,[oldc+12]
mov eax,[oldc+BOX.left]
mov ebx,[oldc+BOX.top]
mov ecx,[oldc+BOX.width]
mov edx,[oldc+BOX.height]
add ecx,eax
add edx,ebx
call calculatescreen
1701,7 → 1702,7
mov edi,[0x3000]
shl edi,5
add edi,window_data
mov [edi+30],byte 1
mov [edi+WDATA.fl_wdrawn],byte 1
pop edi
 
popad
1715,7 → 1716,7
;
; eax = 0 giving address of data area
; ebx address
; ebx = 1 shape area scale
; eax = 1 shape area scale
; ebx 2^ebx scale
 
test eax, eax
1723,7 → 1724,7
mov eax,[0x3000]
shl eax,8
 
mov [eax+0x80000+0x80],ebx
mov [eax+0x80000+APPDATA.wnd_shape],ebx
rsw_no_address:
 
cmp eax,1
1730,7 → 1731,7
jne rsw_no_scale
mov eax,[0x3000]
shl eax,8
mov [eax+0x80000+0x84],bl
mov byte [eax+0x80000+APPDATA.wnd_shape_scale], bl
rsw_no_scale:
 
ret