1
0
kolibrios/programs/fs/kfm/trunk/mouse.inc

266 lines
6.1 KiB
PHP
Raw Normal View History

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
;---------------------------------------------------------------------