/kernel/trunk/gui/event.inc |
---|
441,6 → 441,7 |
shl edi, 5 |
add edi, CURRENT_TASK ; edi is assumed as [TASK_BASE] |
mov ecx, [edi+TASKDATA.event_mask] |
and ecx, 0x7FFFFFFF |
.loop: ; ïîêà íå èñ÷åðïàåì âñå áèòû ìàñêè |
bsr eax, ecx ; íàõîäèì íåíóëåâîé áèò ìàñêè (31 -> 0) |
jz .no_events ; èñ÷åðïàëè âñå áèòû ìàñêè, íî íè÷åãî íå íàøëè ??? |
/kernel/trunk/kernel.asm |
---|
3079,7 → 3079,10 |
cmp [mouse_active], 1 |
jne mouse_not_active |
mov [mouse_active], 0 |
xor edi, edi |
mov ebx, CURRENT_TASK |
mov ecx, [TASK_COUNT] |
movzx eax, word [WIN_POS + ecx*2] ; active window |
shl eax, 8 |
3087,13 → 3090,15 |
align 4 |
.set_mouse_event: |
add edi, 256 |
test [edi+SLOT_BASE+APPDATA.event_filter], 1 |
jz @F |
add ebx, 32 |
test [ebx+TASKDATA.event_mask], 0x80000000 |
jz .set |
cmp eax, edi ; skip if filtration active |
jne .set_mouse_event |
@@: |
jne .skip |
.set: |
or [edi+SLOT_BASE+APPDATA.event_mask], 100000b |
.skip: |
loop .set_mouse_event |
mouse_not_active: |
3363,7 → 3368,7 |
ret |
align 4 |
set_app_param: |
mov edi, [TASK_BASE] |
mov eax, ebx |