kfar: add mouse in menu dialogs, fix mouse alt+f12

git-svn-id: svn://kolibrios.org@9059 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2021-07-13 08:15:21 +00:00
parent 73c3929ff2
commit 7a4aed6e11
2 changed files with 74 additions and 26 deletions

View File

@ -49,7 +49,7 @@ GenericBox:
jz .redraw
dec eax
jz .key
sub eax,4
sub eax, 4
jz .mouse
jmp exit
.redraw:
@ -145,9 +145,11 @@ align 4
mov eax,SF_MOUSE_GET
mov ebx,SSF_BUTTON_EXT
int 0x40
mov byte[mousestate], 1
bt eax,8 ;left but. down
jnc .event
jc @f
mov byte[mousestate], 0
@@:
mov eax,SF_MOUSE_GET
mov ebx,SSF_WINDOW_POSITION
int 0x40
@ -169,8 +171,6 @@ align 4
pop edx
mov ebx, [esp+24h+8] ;DLGTEMPLATE* dlg
cmp dword[ebx+dlgtemplate.size], 0
jne .event ;¥á«¨ ¤¨ «®£®¢®¥ ®ª­® ­¥ áâ ­¤ àâ­®¥ (ᯨ᮪ §­ ç¥­¨©)
cmp edx, [ebx+dlgtemplate.y]
jl .event
cmp eax, [ebx+dlgtemplate.x]
@ -181,7 +181,32 @@ align 4
jge .event
cmp eax, [ebx+dlgtemplate.width]
jge .event
cmp dword[ebx+dlgtemplate.size], 0
je .m_menu_end
;¥á«¨ ¤¨ «®£®¢®¥ ®ª­® ­¥ áâ ­¤ àâ­®¥ (ᯨ᮪ §­ ç¥­¨©)
cmp edx, [ebx+44]
jl @f
mov edx, [ebx+44]
dec edx
@@:
mov ecx, [ebx+48]
mov ecx, [ecx] ;¡¥à¥¬ 㪠§ â¥«ì ­  listitem[1]
sub ecx, [ebx+48] ;ecx - à §¬¥à ®¤­®£® listitem
mov [ebx+56], edx
imul edx, ecx
add edx, [ebx+48]
mov [ebx+40], edx
cmp byte[mousestate], 1
jne @f
mov [esp+28], edx ;save to eax
jmp .exit
@@:
call MenuDlgProc.dodraw
call draw_image
jmp .event
.m_menu_end:
cmp byte[mousestate], 1
jne .event
add ebx, dlgtemplate.size+12
mov ecx, [ebx-4]
or ecx, ecx
@ -193,8 +218,8 @@ align 4
je .m_comp
cmp [ebx+dlgitemtemplate.type], 3 ;edit
je .m_comp
;cmp [ebx+dlgitemtemplate.type], 5 ;check
;je .m_comp
cmp [ebx+dlgitemtemplate.type], 5 ;check
je .m_comp
jmp .m_next
align 4
.m_comp:
@ -212,6 +237,12 @@ align 4
mov [esp+28+8], ebx ;save to eax
pop ecx ebx
jmp .exit
@@:
cmp [ebx+dlgitemtemplate.type], 5 ;check
jne @f
xor [ebx+dlgitemtemplate.flags], 10h
mov eax, ebx
jmp .m_new_focus
@@:
mov eax, [ebx+dlgitemtemplate.flags]
and eax, 4
@ -744,11 +775,11 @@ menu_centered_in:
pushad
mov ecx, 60
; 40 bytes for dlgtemplate + additional:
; +40: dd cur_variant - [???]
; +44: dd num_variants - ᪮«ìª® í«¥¬¥­â®¢ ¢« §¨â ¢ ®ª­®
; +48: dd begin_variant - [dd ..,..,???]
; +52: dd end_variant - [dd ..,..,???]
; +56: dd cur_variant_idx - ???
; +40: dd cur_variant - 㪠§ â¥«ì ­  ¬ áᨢ listitem[num_variants]
; +44: dd num_variants - ᪮«ìª® í«¥¬¥­â®¢ ¢ ᯨ᪥
; +48: dd begin_variant - 㪠§ â¥«ì ­  listitem[0]
; +52: dd end_variant - 㪠§ â¥«ì ­  listitem[num_variants-1]
; +56: dd cur_variant_idx - ¨­¤¥ªá ¢ë¡à ­­®£® í«¥¬¥­â  ®â 0 ¤® num_variants-1
call xpgalloc
test eax, eax
jnz @f
@ -1358,11 +1389,16 @@ ManagerDlgProc:
jz .draw
dec eax
jz .key
;sub eax, 4
;jz .mouse
xor eax, eax
ret 16
.draw:
call .dodraw
ret 16
;.mouse:
;todo
;ret 16
.key:
; find item with focus
add ebx, dlgtemplate.size+12
@ -1824,9 +1860,12 @@ draw_checkbox:
@@:
lodsb
test al, al
jz .ret
jz .correct
stosw
loop @b
ret
.correct:
sub [ebx+dlgitemtemplate.x2], ecx
.ret:
ret

View File

@ -984,11 +984,19 @@ get_keybar_ind:
ret
align 4
OnMouse_ctrl_f39:
OnMouse_ctrl_f3_9:
sub eax, panels_mouse.ctrl+8
shr eax, 2
add eax, 0x3D
call panels_OnKey.ctrl_f39
call panels_OnKey.ctrl_f3_9
ret
align 4
OnMouse_alt_f1_2:
sub eax, panels_mouse.alt
shr eax, 2
add eax, 0x3B
call panels_OnKey.alt_f1_2
ret
align 16
@ -2241,7 +2249,7 @@ panels_OnKey:
pop edi
mov byte [edi], 0
jmp .done_cmdbar
.ctrl_f39:
.ctrl_f3_9:
sub al, 0x3D
add al, al
mov ah, [ebp + PanelData.sortmode]
@ -2277,7 +2285,7 @@ panels_OnKey:
inc ecx
add [ebp + PanelData.start], ecx
jmp @b
.alt_f12:
.alt_f1_2:
mov ebp, panel1
cmp al, 0x3B
jz @f
@ -7566,16 +7574,17 @@ panels_mouse:
.ctrl:
rd 2
repeat 9-3+1
dd OnMouse_ctrl_f39
dd OnMouse_ctrl_f3_9
end repeat
rd 3
; Ctrl+Shift
rd 12
; Alt
rd 6
dd panels_OnKey.alt_f7
.alt:
dd OnMouse_alt_f1_2
dd OnMouse_alt_f1_2
rd 4
dd panels_OnKey.alt_f12
dd panels_OnKey.alt_f7
rd 5
; Alt+Shift
rd 12
; Alt+Ctrl
@ -7636,12 +7645,12 @@ panels_ctrlkeys:
dd panels_OnKey.menu
repeat 9-3+1
dw 0x3D+%-1, 0x10
dd panels_OnKey.ctrl_f39
dd panels_OnKey.ctrl_f3_9
end repeat
dw 0x3B, 0x100
dd panels_OnKey.alt_f12
dd panels_OnKey.alt_f1_2
dw 0x3C, 0x100
dd panels_OnKey.alt_f12
dd panels_OnKey.alt_f1_2
dw 0x58, 0
dd F12
dw 0x13, 0x10