diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 337ebf29d7..33d8041e6f 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -22,6 +22,7 @@ * Y=1 - только определить область окна, ничего не рисовать * Y=2 - тип II - окно изменяемых размеров * Y=3 - окно со скином + * Y=4 - окно со скином и фиксированными размерами * остальные возможные значения (от 4 до 15) зарезервированы, вызов функции с такими Y игнорируется * RR, GG, BB = соответственно красная, зеленая, синяя diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 8da24613b0..9fa1906f56 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -22,6 +22,7 @@ Parameters: * Y=1 - only define window area, draw nothing * Y=2 - type II - variable-size window * Y=3 - skinned window + * Y=4 - skinned window with fixed sizes * other possible values (from 4 up to 15) are reserved, function call with such Y is ignored * RR, GG, BB = accordingly red, green, blue components of a color diff --git a/kernel/trunk/gui/window.inc b/kernel/trunk/gui/window.inc index 7dbff53c28..0bea8ae21a 100644 --- a/kernel/trunk/gui/window.inc +++ b/kernel/trunk/gui/window.inc @@ -899,7 +899,11 @@ windowactivate: mov ebx, [eax + WDATA.cl_workarea] and ebx, 0x0f000000 cmp ebx, 0x03000000 - jne @f + je .set_WDATA_fl_redraw ; for 3 and 4 style + cmp ebx, 0x04000000 + je .set_WDATA_fl_redraw + jmp @f + .set_WDATA_fl_redraw: mov [eax + WDATA.fl_redraw], byte 1 @@: @@ -957,6 +961,8 @@ checkwindowdraw: and eax, 0x0f000000 cmp eax, 0x03000000 je .return_yes ; window type 3 + cmp eax, 0x04000000 + je .return_yes ; window type 4 mov esi, edi sub esi, window_data @@ -1264,8 +1270,13 @@ checkwindows: mov [do_resize_from_corner],byte 0 ; resize for skinned window mov edx, [edi + WDATA.cl_workarea] and edx, 0x0f000000 - cmp edx, 0x02000000 - jb .no_resize_2 ; not type 2 wnd + cmp edx, 0x00000000 ;{test for resized} + je .no_resize_2 + cmp edx, 0x01000000 ;{test for resized} + je .no_resize_2 + cmp edx, 0x04000000 ;{test for resized} + je .no_resize_2 +; jb .no_resize_2 ; not type 2 wnd mov edx, [edi + WDATA.box.top] add edx, [edi + WDATA.box.height] @@ -1497,6 +1508,16 @@ checkwindows: pushad ; WINDOW SHADE/FULLSCREEN + ;{doule click not worked for 4 type window} + mov edx, [edi + WDATA.cl_workarea] + and edx, 0x0f000000 + cmp edx, 0x00000000 + je no_fullscreen_restore + cmp edx, 0x01000000 + je no_fullscreen_restore + cmp edx, 0x04000000 + je no_fullscreen_restore + cmp [reposition],1 je no_window_sizing mov edx,edi diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index ab68475611..26218b40de 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -2953,8 +2953,11 @@ sys_drawwindow: nosyswIII: cmp edi,3 ; type IV - skinned window - jne nosyswIV - + je draw_skin_window + cmp edi,4 ; type V - skinned window not sized! {not_sized_skin_window} + jne nosyswV + draw_skin_window: + ; parameter for drawwindow_IV push 0 mov edi, [TASK_COUNT] @@ -2973,7 +2976,7 @@ sys_drawwindow: ;call [draw_pointer] ;ret jmp draw_window_caption.2 - nosyswIV: + nosyswV: ret @@ -2994,7 +2997,12 @@ draw_window_caption: movzx ebx,[edx+WDATA.fl_wstyle] and bl,0x0F cmp bl,3 - jne .not_style_3 + je .draw_caption_style_3 ;{for 3 and 4 style write caption} + cmp bl,4 + je .draw_caption_style_3 + + jmp .not_style_3 + .draw_caption_style_3: push edx call drawwindow_IV_caption @@ -3028,8 +3036,12 @@ draw_window_caption: movzx eax,[edi+window_data+WDATA.fl_wstyle] and al,0x0F cmp al,3 - jne .not_skinned - + je .skinned + cmp al,4 + je .skinned + + jmp .not_skinned + .skinned: mov ebp,[edi+window_data+WDATA.box.left-2] mov bp,word[edi+window_data+WDATA.box.top] movzx eax,word[edi+window_data+WDATA.box.width] @@ -3085,10 +3097,11 @@ draw_window_caption: iglobal align 4 window_topleft dd \ - 1, 21,\ - 0, 0,\ - 5, 20,\ - 5, ? + 1, 21,\ ;type 0 + 0, 0,\ ;type 1 + 5, 20,\ ;type 2 + 5, ?,\ ;type 3 {set by skin} + 5, ? ;type 4 {set by skin} endg set_window_clientbox: @@ -3096,6 +3109,7 @@ set_window_clientbox: mov eax,[_skinh] mov [window_topleft+4*7],eax + mov [window_topleft+4*9],eax mov ecx,edi sub edi,window_data @@ -3181,7 +3195,12 @@ sys_set_window: and cl,0x0F mov [edi+APPDATA.wnd_caption],0 cmp cl,3 - jne @f + je set_APPDATA_wnd_caption + cmp cl,4 ; {SPraid.simba} + je set_APPDATA_wnd_caption + + jmp @f + set_APPDATA_wnd_caption: mov [edi+APPDATA.wnd_caption],esi @@: mov esi,[esp+0]