Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2413 → Rev 2414

/kernel/trunk/const.inc
513,6 → 513,7
move_cursor dd ?
restore_cursor dd ?
disable_mouse dd ?
mask_seqno dd ?
ends
 
struct BOOT_DATA
/kernel/trunk/core/memory.inc
166,6 → 166,7
ret
endp
 
align 4
proc map_io_mem stdcall, base:dword, size:dword, flags:dword
 
push ebx
/kernel/trunk/docs/sysfuncs.txt
1878,9 → 1878,14
* eax = 40 - function number
* ebx = mask: bit i corresponds to event i+1 (see list of events)
(set bit permits notice on event)
bit 31: mouse events filtration
bit 31 = 1 - inactive window do not receive mouse events
bit 31 = 0 - windows always recievs mouse events
bit 31: active/inactive filter
bit 31 = 0 - inactive window receive mouse events
bit 31 = 1 - inactive window does not receive mouse events
bit 30: cursor position filter
bit 30 = 0 = the window receive mouse events if cursor
outside window
bit 30 = 1 - the window does not receive mouse events if cursor
outside window
Returned value:
* eax = previous value of mask
Remarks:
/kernel/trunk/gui/event.inc
463,16 → 463,16
ret
 
.FlagAutoReset: ; retvals: BgrRedraw=5, Mouse=6, IPC=7, Stack=8, Debug=9
cmp eax, 5; Mouse 5+1=6
jne @f
push eax
; cmp eax, 5; Mouse 5+1=6
; jne @f
; push eax
; If the window is captured and moved by the user, then no mouse events!!!
mov al, [mouse.active_sys_window.action]
and al, WINDOW_MOVE_AND_RESIZE_FLAGS
test al, al
pop eax
jnz .loop
@@:
; mov al, [mouse.active_sys_window.action]
; and al, WINDOW_MOVE_AND_RESIZE_FLAGS
; test al, al
; pop eax
; jnz .loop
;@@:
btr [ebx+APPDATA.event_mask], eax
jnc .loop
.result: ; retval = eax+1
/kernel/trunk/kernel.asm
3086,21 → 3086,45
mov ecx, [TASK_COUNT]
movzx eax, word [WIN_POS + ecx*2] ; active window
shl eax, 8
push eax
 
movzx eax, word [MOUSE_X]
movzx edx, word [MOUSE_Y]
 
align 4
.set_mouse_event:
add edi, 256
add ebx, 32
test [ebx+TASKDATA.event_mask], 0x80000000
jz .pos_filter
 
cmp edi, [esp] ; skip if filtration active
jne .skip
 
.pos_filter:
test [ebx+TASKDATA.event_mask], 0x40000000
jz .set
 
cmp eax, edi ; skip if filtration active
jne .skip
mov esi, [ebx-twdw+WDATA.box.left]
cmp eax, esi
jb .skip
add esi, [ebx-twdw+WDATA.box.width]
cmp eax, esi
ja .skip
 
mov esi, [ebx-twdw+WDATA.box.top]
cmp edx, esi
jb .skip
add esi, [ebx-twdw+WDATA.box.height]
cmp edx, esi
ja .skip
.set:
or [edi+SLOT_BASE+APPDATA.event_mask], 100000b
.skip:
loop .set_mouse_event
 
pop eax
 
mouse_not_active:
cmp byte[BACKGROUND_CHANGED], 0
jz no_set_bgr_event