forked from KolibriOS/kolibrios
kfar: add mouse double click events, fix mouse in menu
git-svn-id: svn://kolibrios.org@9039 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
293a74db28
commit
90de905a60
@ -169,6 +169,8 @@ align 4
|
|||||||
pop edx
|
pop edx
|
||||||
|
|
||||||
mov ebx, [esp+24h+8] ;DLGTEMPLATE* dlg
|
mov ebx, [esp+24h+8] ;DLGTEMPLATE* dlg
|
||||||
|
cmp dword[ebx+dlgtemplate.size], 0
|
||||||
|
jne .event ;¥á«¨ ¤¨ «®£®¢®¥ ®ª® ¥ áâ ¤ à⮥ (ᯨ᮪ § 票©)
|
||||||
cmp edx, [ebx+dlgtemplate.y]
|
cmp edx, [ebx+dlgtemplate.y]
|
||||||
jl .event
|
jl .event
|
||||||
cmp eax, [ebx+dlgtemplate.x]
|
cmp eax, [ebx+dlgtemplate.x]
|
||||||
@ -205,6 +207,12 @@ align 4
|
|||||||
cmp [ebx+dlgitemtemplate.y2], edx
|
cmp [ebx+dlgitemtemplate.y2], edx
|
||||||
jl .m_next
|
jl .m_next
|
||||||
|
|
||||||
|
cmp [ebx+dlgitemtemplate.type], 2 ;button
|
||||||
|
jne @f
|
||||||
|
mov [esp+28+8], ebx ;save to eax
|
||||||
|
pop ecx ebx
|
||||||
|
jmp .exit
|
||||||
|
@@:
|
||||||
mov eax, [ebx+dlgitemtemplate.flags]
|
mov eax, [ebx+dlgitemtemplate.flags]
|
||||||
and eax, 4
|
and eax, 4
|
||||||
jnz .m_old_focus
|
jnz .m_old_focus
|
||||||
@ -438,6 +446,7 @@ draw_dialog_shadow:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
; void __stdcall DrawGenericBox(DLGDATA* dlg, void* DlgProc)
|
; void __stdcall DrawGenericBox(DLGDATA* dlg, void* DlgProc)
|
||||||
|
align 16
|
||||||
DrawGenericBox:
|
DrawGenericBox:
|
||||||
pushad
|
pushad
|
||||||
mov ebx, [esp+24h]
|
mov ebx, [esp+24h]
|
||||||
@ -720,6 +729,7 @@ restore_console_data:
|
|||||||
|
|
||||||
; int __stdcall menu(void* variants, const char* title, unsigned flags);
|
; int __stdcall menu(void* variants, const char* title, unsigned flags);
|
||||||
; variants 㪠§ë¢ ¥â ⥪ã騩 í«¥¬¥â ¢ ¤¢ãá¢ï§®¬ «¨¥©®¬ ᯨ᪥
|
; variants 㪠§ë¢ ¥â ⥪ã騩 í«¥¬¥â ¢ ¤¢ãá¢ï§®¬ «¨¥©®¬ ᯨ᪥
|
||||||
|
align 16
|
||||||
menu:
|
menu:
|
||||||
pop eax
|
pop eax
|
||||||
push [cur_height]
|
push [cur_height]
|
||||||
@ -734,11 +744,11 @@ menu_centered_in:
|
|||||||
pushad
|
pushad
|
||||||
mov ecx, 60
|
mov ecx, 60
|
||||||
; 40 bytes for dlgtemplate + additional:
|
; 40 bytes for dlgtemplate + additional:
|
||||||
; +40: dd cur_variant
|
; +40: dd cur_variant - [???]
|
||||||
; +44: dd num_variants
|
; +44: dd num_variants - ᪮«ìª® í«¥¬¥â®¢ ¢« §¨â ¢ ®ª®
|
||||||
; +48: dd begin_variant
|
; +48: dd begin_variant - [dd ..,..,???]
|
||||||
; +52: dd end_variant
|
; +52: dd end_variant - [dd ..,..,???]
|
||||||
; +56: dd cur_variant_idx
|
; +56: dd cur_variant_idx - ???
|
||||||
call xpgalloc
|
call xpgalloc
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz @f
|
jnz @f
|
||||||
@ -749,7 +759,7 @@ menu_centered_in:
|
|||||||
@@:
|
@@:
|
||||||
mov ebx, eax
|
mov ebx, eax
|
||||||
mov eax, 1
|
mov eax, 1
|
||||||
test byte [esp+20h+28], 1
|
test byte [esp+20h+28], 1 ;unsigned flags
|
||||||
jz @f
|
jz @f
|
||||||
mov al, 3
|
mov al, 3
|
||||||
@@:
|
@@:
|
||||||
@ -760,7 +770,7 @@ menu_centered_in:
|
|||||||
; <EFBFBD> 室¨¬ è¨à¨ã ¨ ¢ëá®âã ®ª
|
; <EFBFBD> 室¨¬ è¨à¨ã ¨ ¢ëá®âã ®ª
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
xor ecx, ecx
|
xor ecx, ecx
|
||||||
mov esi, [esp+20h+20]
|
mov esi, [esp+20h+20] ;void* variants
|
||||||
mov [ebx+40], esi
|
mov [ebx+40], esi
|
||||||
mov dword [ebx+56], eax
|
mov dword [ebx+56], eax
|
||||||
@@:
|
@@:
|
||||||
@ -889,6 +899,7 @@ menu_centered_in:
|
|||||||
popad
|
popad
|
||||||
ret 28
|
ret 28
|
||||||
|
|
||||||
|
align 16
|
||||||
MenuDlgProc:
|
MenuDlgProc:
|
||||||
mov eax, [esp+8]
|
mov eax, [esp+8]
|
||||||
cmp al, 1
|
cmp al, 1
|
||||||
|
@ -819,9 +819,14 @@ mouse:
|
|||||||
mov eax,SF_MOUSE_GET
|
mov eax,SF_MOUSE_GET
|
||||||
mov ebx,SSF_BUTTON_EXT
|
mov ebx,SSF_BUTTON_EXT
|
||||||
int 0x40
|
int 0x40
|
||||||
|
mov byte[mousestate], 1
|
||||||
|
bt eax,24 ;left but. double click
|
||||||
|
jc @f
|
||||||
|
mov byte[mousestate], 0
|
||||||
bt eax,8 ;left but. down
|
bt eax,8 ;left but. down
|
||||||
jnc event
|
jc @f
|
||||||
|
jmp event
|
||||||
|
@@:
|
||||||
mov eax,SF_MOUSE_GET
|
mov eax,SF_MOUSE_GET
|
||||||
mov ebx,SSF_WINDOW_POSITION
|
mov ebx,SSF_WINDOW_POSITION
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -897,9 +902,14 @@ end if
|
|||||||
cmp edx, 0
|
cmp edx, 0
|
||||||
jl @f
|
jl @f
|
||||||
mov [ebp + PanelData.index], edx
|
mov [ebp + PanelData.index], edx
|
||||||
|
cmp byte[mousestate], 0
|
||||||
|
je @f
|
||||||
|
call panels_OnKey.enter
|
||||||
|
jmp event
|
||||||
@@:
|
@@:
|
||||||
call draw_panel
|
call draw_panel
|
||||||
jmp event
|
jmp event
|
||||||
|
align 4
|
||||||
.on_panel:
|
.on_panel:
|
||||||
call get_keybar_ind
|
call get_keybar_ind
|
||||||
lea eax, [panels_mouse+4*eax]
|
lea eax, [panels_mouse+4*eax]
|
||||||
@ -908,7 +918,6 @@ end if
|
|||||||
mov ebp, [active_panel]
|
mov ebp, [active_panel]
|
||||||
mov ecx, [ebp + PanelData.index]
|
mov ecx, [ebp + PanelData.index]
|
||||||
call dword[eax]
|
call dword[eax]
|
||||||
@@:
|
|
||||||
jmp event
|
jmp event
|
||||||
|
|
||||||
;input:
|
;input:
|
||||||
@ -974,6 +983,14 @@ get_keybar_ind:
|
|||||||
pop edi esi edx ecx ebx
|
pop edi esi edx ecx ebx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
OnMouse_ctrl_f39:
|
||||||
|
sub eax, panels_mouse.ctrl+8
|
||||||
|
shr eax, 2
|
||||||
|
add eax, 0x3D
|
||||||
|
call panels_OnKey.ctrl_f39
|
||||||
|
ret
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
process_ctrl_keys:
|
process_ctrl_keys:
|
||||||
cmp byte [esi], 0
|
cmp byte [esi], 0
|
||||||
@ -1106,6 +1123,7 @@ enum_associations_callback:
|
|||||||
xor eax, eax
|
xor eax, eax
|
||||||
ret 16
|
ret 16
|
||||||
|
|
||||||
|
align 4
|
||||||
enum_plugins_callback:
|
enum_plugins_callback:
|
||||||
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
|
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
|
||||||
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
|
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
|
||||||
@ -3478,6 +3496,7 @@ close_plugin_panels:
|
|||||||
jnz @b
|
jnz @b
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
close_plugin_panel:
|
close_plugin_panel:
|
||||||
; close plugin and restore old directory
|
; close plugin and restore old directory
|
||||||
mov esi, [ebp + PanelData.parents]
|
mov esi, [ebp + PanelData.parents]
|
||||||
@ -3515,6 +3534,7 @@ close_plugin_panel:
|
|||||||
@@:
|
@@:
|
||||||
pop ebx edx
|
pop ebx edx
|
||||||
|
|
||||||
|
align 4
|
||||||
close_handle_if_unused:
|
close_handle_if_unused:
|
||||||
; edx=hPlugin, ebx=hFile
|
; edx=hPlugin, ebx=hFile
|
||||||
push ebp
|
push ebp
|
||||||
@ -3534,6 +3554,7 @@ close_handle_if_unused:
|
|||||||
pop ebp
|
pop ebp
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
panels_IsHandleUsed:
|
panels_IsHandleUsed:
|
||||||
; edx=hPlugin, ebx=hFile
|
; edx=hPlugin, ebx=hFile
|
||||||
mov ebp, panel1
|
mov ebp, panel1
|
||||||
@ -3570,6 +3591,7 @@ panels_IsHandleUsed:
|
|||||||
inc esi
|
inc esi
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
panels_OnExit:
|
panels_OnExit:
|
||||||
; close plugin panels
|
; close plugin panels
|
||||||
mov ebp, panel1
|
mov ebp, panel1
|
||||||
@ -3578,6 +3600,7 @@ panels_OnExit:
|
|||||||
call close_plugin_panels
|
call close_plugin_panels
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
panels_OnRedraw:
|
panels_OnRedraw:
|
||||||
or [cursor_x], -1
|
or [cursor_x], -1
|
||||||
or [cursor_y], -1
|
or [cursor_y], -1
|
||||||
@ -3590,6 +3613,7 @@ panels_OnRedraw:
|
|||||||
call draw_panel
|
call draw_panel
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
init_console:
|
init_console:
|
||||||
mov ecx, [console_data_ptr]
|
mov ecx, [console_data_ptr]
|
||||||
call pgfree
|
call pgfree
|
||||||
@ -3624,12 +3648,15 @@ init_console:
|
|||||||
mov [panel2.height], eax
|
mov [panel2.height], eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
get_curfile_folder_entry:
|
get_curfile_folder_entry:
|
||||||
mov ecx, [ebp + PanelData.index]
|
mov ecx, [ebp + PanelData.index]
|
||||||
shl ecx, 2
|
shl ecx, 2
|
||||||
add ecx, [ebp + PanelData.files]
|
add ecx, [ebp + PanelData.files]
|
||||||
mov ecx, [ecx]
|
mov ecx, [ecx]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
get_curfile_name:
|
get_curfile_name:
|
||||||
call get_curfile_folder_entry
|
call get_curfile_folder_entry
|
||||||
add ecx, 40
|
add ecx, 40
|
||||||
@ -4970,6 +4997,7 @@ end if
|
|||||||
sub ecx, edi
|
sub ecx, edi
|
||||||
ret 8
|
ret 8
|
||||||
|
|
||||||
|
align 4
|
||||||
get_file_color:
|
get_file_color:
|
||||||
mov ah, [esi + 6]
|
mov ah, [esi + 6]
|
||||||
cmp ebp, [active_panel]
|
cmp ebp, [active_panel]
|
||||||
@ -4989,6 +5017,7 @@ get_file_color:
|
|||||||
@@:
|
@@:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
draw_name_column:
|
draw_name_column:
|
||||||
mov eax, [column_index]
|
mov eax, [column_index]
|
||||||
mov [last_column_index], eax
|
mov [last_column_index], eax
|
||||||
@ -5151,6 +5180,7 @@ draw_name_column:
|
|||||||
draw_empty_column:
|
draw_empty_column:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
draw_size_column:
|
draw_size_column:
|
||||||
add edi, [column_width]
|
add edi, [column_width]
|
||||||
add edi, [column_width]
|
add edi, [column_width]
|
||||||
@ -5295,6 +5325,7 @@ end if
|
|||||||
cld
|
cld
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
draw_date_column:
|
draw_date_column:
|
||||||
mov ecx, [column_height]
|
mov ecx, [column_height]
|
||||||
dec ecx
|
dec ecx
|
||||||
@ -5361,6 +5392,7 @@ draw_date_column:
|
|||||||
cld
|
cld
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
draw_time_column:
|
draw_time_column:
|
||||||
mov ecx, [column_height]
|
mov ecx, [column_height]
|
||||||
dec ecx
|
dec ecx
|
||||||
@ -5445,6 +5477,7 @@ draw_time_column:
|
|||||||
;@@: pop esi
|
;@@: pop esi
|
||||||
; ret
|
; ret
|
||||||
|
|
||||||
|
align 4
|
||||||
read_folder:
|
read_folder:
|
||||||
mov eax, [ebp + PanelData.nfa]
|
mov eax, [ebp + PanelData.nfa]
|
||||||
mov [dirinfo.size], eax
|
mov [dirinfo.size], eax
|
||||||
@ -7530,8 +7563,12 @@ panels_mouse:
|
|||||||
rd 4
|
rd 4
|
||||||
dd panels_OnKey.shift_f5
|
dd panels_OnKey.shift_f5
|
||||||
rd 7
|
rd 7
|
||||||
; Ctrl
|
.ctrl:
|
||||||
rd 12
|
rd 2
|
||||||
|
repeat 9-3+1
|
||||||
|
dd OnMouse_ctrl_f39
|
||||||
|
end repeat
|
||||||
|
rd 3
|
||||||
; Ctrl+Shift
|
; Ctrl+Shift
|
||||||
rd 12
|
rd 12
|
||||||
; Alt
|
; Alt
|
||||||
@ -7929,6 +7966,8 @@ FolderShortcuts dd 0,0,0,0,0,0,0,0,0,0
|
|||||||
|
|
||||||
bWasE0 db 0
|
bWasE0 db 0
|
||||||
ctrlstate db 0
|
ctrlstate db 0
|
||||||
|
mousestate db 0
|
||||||
|
align 4
|
||||||
MemForImage dd 0
|
MemForImage dd 0
|
||||||
restore_semicolon dd 0
|
restore_semicolon dd 0
|
||||||
bForHex db 0
|
bForHex db 0
|
||||||
|
Loading…
Reference in New Issue
Block a user