forked from KolibriOS/kolibrios
23bf5e60ae
git-svn-id: svn://kolibrios.org@1792 a494cfbc-eb01-0410-851d-a64ba20cac60
266 lines
6.1 KiB
PHP
266 lines
6.1 KiB
PHP
mouse:
|
|
mcall 18,7
|
|
cmp [active_process],eax
|
|
jne still
|
|
mcall 37,7
|
|
mov [mouse_scroll_data],eax
|
|
; test eax,eax
|
|
; jnz .continue_2
|
|
mcall 37,2
|
|
cmp [mouse_keys],eax
|
|
je @f
|
|
mov [mouse_keys],eax
|
|
mov [mouse_keys_delta],0
|
|
jmp .continue_2
|
|
@@:
|
|
mov [mouse_keys_delta],1
|
|
.continue_2:
|
|
mcall 37,1
|
|
mov [mouse_position],eax
|
|
; mcall 18,7
|
|
; cmp [active_process],eax
|
|
; jne still
|
|
mov eax,[mouse_position]
|
|
test eax,0x80000000
|
|
jnz still
|
|
test eax,0x8000
|
|
jnz still
|
|
mov ebx,eax
|
|
shr ebx,16
|
|
shl eax,16
|
|
shr eax,16
|
|
cmp [mouse_keys_delta],0
|
|
je @f
|
|
cmp [scroll_pointer],0
|
|
jne .check_scroll_bar_left
|
|
@@:
|
|
cmp ebx,[window_width]
|
|
ja still
|
|
cmp eax,[window_high]
|
|
ja still
|
|
.check_scroll_bar_left:
|
|
xor ecx,ecx
|
|
mov cx,[left_panel_y.start_y]
|
|
cmp [mouse_keys_delta],0
|
|
je @f
|
|
cmp [scroll_pointer],1
|
|
je .check_scroll_bar_left_event
|
|
cmp [scroll_pointer],2
|
|
je .check_scroll_bar_right_event
|
|
@@:
|
|
cmp ax,cx
|
|
jbe .other
|
|
add cx,[left_panel_y.size_y]
|
|
cmp ax,cx
|
|
jae .other
|
|
mov cx,[left_panel_x.start_x]
|
|
cmp bx,cx
|
|
jbe .other
|
|
add cx,[left_panel_x.size_x]
|
|
cmp bx,cx
|
|
jae .check_scroll_bar_right
|
|
mov edx,[left_folder_block]
|
|
cmp edx,[max_panel_line]
|
|
jbe @f
|
|
.check_scroll_bar_left_event:
|
|
mov [scroll_bar_event],0
|
|
call check_scroll_left_event
|
|
cmp [scroll_bar_event],0
|
|
jne still
|
|
mov [scroll_bar_event],0
|
|
call check_scroll_bar_left_event
|
|
cmp [scroll_bar_event],0
|
|
jne still ;.continue
|
|
; cmp [scroll_pointer],1
|
|
; je .continue
|
|
@@:
|
|
call check_left_panel_mouse_event
|
|
; jmp still
|
|
.continue:
|
|
; mov [temp_edx],mouse_left_panel
|
|
; call mouse.draw_data
|
|
; mov [scroll_pointer],0
|
|
; mov [mouse_keys_delta_1],0
|
|
jmp still
|
|
|
|
.check_scroll_bar_right:
|
|
xor ecx,ecx
|
|
mov cx,[right_panel_x.start_x]
|
|
cmp bx,cx
|
|
jbe .other
|
|
add cx,[right_panel_x.size_x]
|
|
cmp bx,cx
|
|
jae .other
|
|
mov edx,[right_folder_block]
|
|
cmp edx,[max_panel_line]
|
|
jbe @f
|
|
.check_scroll_bar_right_event:
|
|
mov [scroll_bar_event],0
|
|
call check_scroll_right_event
|
|
cmp [scroll_bar_event],0
|
|
jne still
|
|
mov [scroll_bar_event],0
|
|
call check_scroll_bar_right_event
|
|
cmp [scroll_bar_event],0
|
|
jne still ;.continue_1
|
|
@@:
|
|
call check_right_panel_mouse_event
|
|
.continue_1:
|
|
; mov [temp_edx],mouse_right_panel
|
|
; call mouse.draw_data
|
|
jmp still
|
|
|
|
.other:
|
|
; mov [temp_edx],mouse_other_panel
|
|
; call mouse.draw_data
|
|
jmp still
|
|
|
|
;.draw_data:
|
|
; pusha
|
|
; mov [temp_eax],eax
|
|
; mcall 13,<190,400>,<3,15>,0x0
|
|
; xor ecx,ecx
|
|
; mov cx,[mouse_position.x]
|
|
; mcall 47,0x80000, ,<200, 5>,0xffffff
|
|
; mov cx,[mouse_position.y]
|
|
; mcall 47,0x80000, ,<300, 5>,0xffffff
|
|
; mcall 47,0x80000,[mouse_keys],<400, 5>,0xffffff
|
|
; mcall 4,<500,5>,0xffffff,[temp_edx],5
|
|
; mcall 47,0x80000,[mouse_keys],<200, 5>,0xffffff
|
|
; popa
|
|
; ret
|
|
;---------------------------------------------------------------------
|
|
check_left_panel_mouse_event:
|
|
; cmp [scroll_pointer],0
|
|
; je @f
|
|
mov [scroll_pointer],0
|
|
; ret
|
|
@@:
|
|
cmp [mouse_keys_delta],0
|
|
jz .start
|
|
cmp [mouse_keys],0
|
|
jz .end
|
|
.start:
|
|
sub ax,[left_panel_y.start_y]
|
|
mov ebx,10
|
|
xor edx,edx
|
|
div ebx
|
|
imul eax,10
|
|
cmp [select_panel_counter],0
|
|
je @f
|
|
mov [select_panel_counter],0
|
|
mov [mouse_keys_delta_1],0
|
|
push eax
|
|
call draw_right_panel
|
|
pop eax
|
|
jmp .continue
|
|
@@:
|
|
cmp [left_start_draw_cursor_line],ax
|
|
jne @f
|
|
cmp [mouse_keys],0
|
|
jnz .continue
|
|
cmp [mouse_keys_delta],0
|
|
je .enter
|
|
@@:
|
|
mov [mouse_keys_delta_1],0
|
|
.continue:
|
|
imul ebx,[left_folder_block],10
|
|
cmp eax,ebx
|
|
jb @f
|
|
sub ebx,10
|
|
mov [left_start_draw_cursor_line],bx
|
|
jmp .continue_1
|
|
@@:
|
|
mov [left_start_draw_cursor_line],ax
|
|
.continue_1:
|
|
call draw_left_panel
|
|
.end:
|
|
ret
|
|
.enter:
|
|
cmp [mouse_keys_delta_1],1
|
|
je .enter_1
|
|
mcall 26,9
|
|
add eax,[mouse_key_delay]
|
|
mov [mouse_keys_tick],eax
|
|
mov [mouse_keys_delta_1],1
|
|
jmp .continue_1
|
|
.enter_1:
|
|
mov [mouse_keys_delta_1],0
|
|
mcall 26,9
|
|
cmp eax,[mouse_keys_tick]
|
|
jbe @f
|
|
ret
|
|
@@:
|
|
add esp,4
|
|
; call draw_left_panel
|
|
jmp key_28.1
|
|
;---------------------------------------------------------------------
|
|
check_right_panel_mouse_event:
|
|
; cmp [scroll_pointer],0
|
|
; je @f
|
|
mov [scroll_pointer],0
|
|
; ret
|
|
@@:
|
|
cmp [mouse_keys_delta],0
|
|
jz .start
|
|
cmp [mouse_keys],0
|
|
jz .end
|
|
.start:
|
|
sub ax,[right_panel_y.start_y]
|
|
mov ebx,10
|
|
xor edx,edx
|
|
div ebx
|
|
imul eax,10
|
|
cmp [select_panel_counter],1
|
|
je @f
|
|
mov [select_panel_counter],1
|
|
mov [mouse_keys_delta_1],0
|
|
push eax
|
|
call draw_left_panel
|
|
pop eax
|
|
jmp .continue
|
|
@@:
|
|
cmp [right_start_draw_cursor_line],ax
|
|
jne @f
|
|
cmp [mouse_keys],0
|
|
jnz .continue
|
|
cmp [mouse_keys_delta],0
|
|
je .enter
|
|
@@:
|
|
mov [mouse_keys_delta_1],0
|
|
; cmp [mouse_keys_delta],1
|
|
; je .continue
|
|
; cmp [right_start_draw_cursor_line],ax
|
|
; je .enter
|
|
.continue:
|
|
imul ebx,[right_folder_block],10
|
|
cmp eax,ebx
|
|
jb @f
|
|
sub ebx,10
|
|
mov [right_start_draw_cursor_line],bx
|
|
jmp .continue_1
|
|
@@:
|
|
mov [right_start_draw_cursor_line],ax
|
|
.continue_1:
|
|
call draw_right_panel
|
|
.end:
|
|
ret
|
|
.enter:
|
|
cmp [mouse_keys_delta_1],1
|
|
je .enter_1
|
|
mcall 26,9
|
|
add eax,[mouse_key_delay]
|
|
mov [mouse_keys_tick],eax
|
|
mov [mouse_keys_delta_1],1
|
|
jmp .continue_1
|
|
.enter_1:
|
|
mov [mouse_keys_delta_1],0
|
|
mcall 26,9
|
|
cmp eax,[mouse_keys_tick]
|
|
jbe @f
|
|
ret
|
|
@@:
|
|
add esp,4
|
|
; call draw_right_panel
|
|
jmp key_28.1
|
|
;--------------------------------------------------------------------- |