Subversion Repositories Kolibri OS

Rev

Rev 2513 | Rev 3390 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2513 Rev 2534
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
5
;; Distributed under terms of the GNU General Public License    ;;
5
;; Distributed under terms of the GNU General Public License    ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 2513 $
8
$Revision: 2534 $
9
 
9
 
10
WINDOW_MOVE_AND_RESIZE_FLAGS = \
10
WINDOW_MOVE_AND_RESIZE_FLAGS = \
11
  mouse.WINDOW_RESIZE_N_FLAG + \
11
  mouse.WINDOW_RESIZE_N_FLAG + \
Line 495... Line 495...
495
        bsr     eax, ecx       ; íàõîäèì íåíóëåâîé áèò ìàñêè (31 -> 0)
495
        bsr     eax, ecx       ; íàõîäèì íåíóëåâîé áèò ìàñêè (31 -> 0)
496
        jz      .no_events     ; èñ÷åðïàëè âñå áèòû ìàñêè, íî íè÷åãî íå íàøëè ???
496
        jz      .no_events     ; èñ÷åðïàëè âñå áèòû ìàñêè, íî íè÷åãî íå íàøëè ???
497
        btr     ecx, eax       ; ñáðàñûâàåì ïðîâåðÿåìûé áèò ìàñêè
497
        btr     ecx, eax       ; ñáðàñûâàåì ïðîâåðÿåìûé áèò ìàñêè
498
       ; ïåðåõîäèì íà îáðàáîò÷èê ýòîãî (eax) áèòà
498
       ; ïåðåõîäèì íà îáðàáîò÷èê ýòîãî (eax) áèòà
499
        cmp     eax, 9
499
        cmp     eax, 9
500
        jae     .loop          ; eax=[9..31], ignored
500
        jae     .loop          ; eax=[9..31], ignored (event 10...32)
-
 
501
 
501
        cmp     eax, 3
502
        cmp     eax, 3
502
        je      .loop          ; eax=3, ignored
503
        je      .loop          ; eax=3, ignored (event 4)
-
 
504
 
-
 
505
        cmp     eax, 4
-
 
506
        je      .FlagAutoReset  ; eax=4, retvals=eax+1 (event 5)
-
 
507
 
-
 
508
        cmp     eax, 5
-
 
509
        je      .mouse_check  ; eax=5, retvals=eax+1 (event 6)
-
 
510
 
503
        ja      .FlagAutoReset ; eax=[4..8], retvals=eax+1
511
        ja      .FlagAutoReset ; eax=[6..8], retvals=eax+1 (event 7...9)
-
 
512
 
504
        cmp     eax, 1
513
        cmp     eax, 1
505
        jae     .BtKy          ; eax=[1,2],  retvals=eax+1
514
        jae     .BtKy          ; eax=[1,2],  retvals=eax+1 (event 2,3)
506
;--------------------------------------
515
;--------------------------------------
507
align 4
516
align 4
508
.WndRedraw:                    ; eax=0, retval WndRedraw=1
517
.WndRedraw:                    ; eax=0, retval WndRedraw=1
509
        cmp     [edi-twdw+WDATA.fl_redraw], al;al==0
518
        cmp     [edi-twdw+WDATA.fl_redraw], al;al==0
510
        jne     .result
519
        jne     .result
Line 514... Line 523...
514
.no_events:
523
.no_events:
515
        xor     eax, eax
524
        xor     eax, eax
516
        ret
525
        ret
517
;--------------------------------------
526
;--------------------------------------
518
align 4
527
align 4
519
.FlagAutoReset: ; retvals: BgrRedraw=5, Mouse=6, IPC=7, Stack=8, Debug=9
-
 
520
        cmp     eax, 5; Mouse 5+1=6
528
.mouse_check:    ; Mouse 5+1=6
521
        jne     .no_mouse_check
-
 
522
        push    eax
529
        push    eax
523
        mov     eax, [TASK_BASE]
530
        mov     eax, [TASK_BASE]
524
        mov     eax, [eax + TASKDATA.event_mask]
531
        mov     eax, [eax + TASKDATA.event_mask]
525
        test    eax, 0x80000000 ; bit 31: active/inactive filter f.40
532
        test    eax, 0x80000000 ; bit 31: active/inactive filter f.40
526
        jz      @f
533
        jz      @f
527
        pop     eax
534
        pop     eax
528
        jmp     .no_mouse_check
535
        jmp     .FlagAutoReset
529
;--------------------------------------
536
;--------------------------------------
530
align 4
537
align 4
531
@@:
538
@@:
532
; If the window is captured and moved by the user, then no mouse events!!!
539
; If the window is captured and moved by the user, then no mouse events!!!
533
        mov     al, [mouse.active_sys_window.action]
540
        mov     al, [mouse.active_sys_window.action]
Line 535... Line 542...
535
        test    al, al
542
        test    al, al
536
        pop     eax
543
        pop     eax
537
        jnz     .loop
544
        jnz     .loop
538
;--------------------------------------
545
;--------------------------------------
539
align 4
546
align 4
540
.no_mouse_check:
547
.FlagAutoReset: ; retvals: BgrRedraw=5, IPC=7, Stack=8, Debug=9
541
        btr     [ebx+APPDATA.event_mask], eax
548
        btr     [ebx+APPDATA.event_mask], eax
542
        jnc     .loop
549
        jnc     .loop
543
;--------------------------------------
550
;--------------------------------------
544
align 4
551
align 4
545
.result:      ; retval = eax+1
552
.result:      ; retval = eax+1