Subversion Repositories Kolibri OS

Rev

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

Rev 5847 Rev 5865
Line 4... Line 4...
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
;;                                                              ;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 8... Line 8...
8
 
8
 
Line 9... Line 9...
9
$Revision: 5847 $
9
$Revision: 5865 $
10
 
10
 
11
;==============================================================================
11
;==============================================================================
Line 437... Line 437...
437
        cmp     ecx, WIN_POS - 2
437
        cmp     ecx, WIN_POS - 2
438
        jne     @b
438
        jne     @b
439
        pop     ecx eax
439
        pop     ecx eax
440
        ret
440
        ret
441
;------------------------------------------------------------------------------
441
;------------------------------------------------------------------------------
442
iglobal
-
 
443
win_zmodi db ZPOS_DESKTOP,\
-
 
444
             ZPOS_ALWAYS_BACK,\
-
 
445
             ZPOS_NORMAL,\
-
 
446
             ZPOS_ALWAYS_TOP
-
 
447
endg
442
 
448
align 4
443
align 4
449
;------------------------------------------------------------------------------
444
;------------------------------------------------------------------------------
450
calculatescreen: ;/////////////////////////////////////////////////////////////
445
calculatescreen: ;/////////////////////////////////////////////////////////////
451
;------------------------------------------------------------------------------
446
;------------------------------------------------------------------------------
452
;? Scan all windows from bottom to top, calling `setscreen` for each one
447
;? Scan all windows from bottom to top, calling `setscreen` for each one
Line 472... Line 467...
472
 
467
 
Line 473... Line 468...
473
        push    eax ;for num layout
468
        push    eax ;for num layout
Line 474... Line 469...
474
 
469
 
475
        push    edx ecx ebx eax
470
        push    edx ecx ebx eax
476
 
471
 
477
        mov     dword[esp+14], 0
472
        mov     dword[esp+10h], ZPOS_DESKTOP
478
;--------------------------------------
473
;--------------------------------------
479
align 4
474
align 4
Line 491... Line 486...
491
 
486
 
492
        add     edi, window_data
487
        add     edi, window_data
493
        test    [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
488
        test    [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
Line 494... Line 489...
494
        jnz     .skip_window
489
        jnz     .skip_window
495
 
-
 
496
        mov     eax, [esp+14]
490
 
497
        mov     al, [eax+win_zmodi]
491
        mov     eax, [esp+10h]
Line 498... Line 492...
498
        cmp     [edi + WDATA.z_modif], al
492
        cmp     [edi + WDATA.z_modif], al
499
        jne     .skip_window
493
        jne     .skip_window
Line 546... Line 540...
546
.skip_window:
540
.skip_window:
547
        inc     esi
541
        inc     esi
548
        dec     ebp
542
        dec     ebp
549
        jnz     .next_window
543
        jnz     .next_window
550
;---------------------------------------------
544
;---------------------------------------------
551
        inc     dword[esp+14]
545
        inc     dword[esp+10h]
552
        cmp     dword[esp+14], ZPOS_ALWAYS_TOP
546
        cmp     dword[esp+10h], ZPOS_ALWAYS_TOP
553
        jbe     .layout
547
        jle     .layout
554
;---------------------------------------------
548
;---------------------------------------------
555
        mov     esi, [TASK_COUNT]
549
        mov     esi, [TASK_COUNT]
556
        movzx   edi, word[WIN_POS + esi * 2]
550
        movzx   edi, word[WIN_POS + esi * 2]
557
        shl     edi, 5
551
        shl     edi, 5
558
        add     edi, window_data
552
        add     edi, window_data
Line 1010... Line 1004...
1010
 
1004
 
1011
        mov     edi, [TASK_COUNT]
1005
        mov     edi, [TASK_COUNT]
1012
        movzx   esi, word[WIN_POS + edi * 2]
1006
        movzx   esi, word[WIN_POS + edi * 2]
Line 1013... Line 1007...
1013
        call    window._.set_screen
1007
        call    window._.set_screen
Line 1014... Line 1008...
1014
 
1008
 
1015
        call    window._.set_top_wnd    ;Fantomer
1009
        call    window._.set_top_wnd
Line 1016... Line 1010...
1016
 
1010
 
Line 2430... Line 2424...
2430
        mov     [ecx+RECT.bottom], edx
2424
        mov     [ecx+RECT.bottom], edx
2431
        ret
2425
        ret
2432
;------------------------------------------------------------------------------
2426
;------------------------------------------------------------------------------
2433
align 4
2427
align 4
2434
;------------------------------------------------------------------------------
2428
;------------------------------------------------------------------------------
-
 
2429
window._.redraw_top_wnd: ;////////////////////////////////////////////////////////
-
 
2430
;------------------------------------------------------------------------------
-
 
2431
;? redraw all windows one above the window
-
 
2432
;------------------------------------------------------------------------------
-
 
2433
;> eax = left
-
 
2434
;> ebx = top
-
 
2435
;> ecx = right
-
 
2436
;> edx = bottom
-
 
2437
;> esi = process number
-
 
2438
;! corrupted edi
-
 
2439
;------------------------------------------------------------------------------
-
 
2440
        push    0
-
 
2441
        jmp     window._.set_top_wnd.go
-
 
2442
 
-
 
2443
align 4
-
 
2444
;------------------------------------------------------------------------------
2435
window._.set_top_wnd: ;////////////////////////////////////////////////////////
2445
window._.set_top_wnd: ;////////////////////////////////////////////////////////
2436
;------------------------------------------------------------------------------
2446
;------------------------------------------------------------------------------
2437
;? updates all windows one above the window
2447
;? call set_screen for all windows one above the window
2438
;------------------------------------------------------------------------------
2448
;------------------------------------------------------------------------------
2439
;> eax = left
2449
;> eax = left
2440
;> ebx = top
2450
;> ebx = top
2441
;> ecx = right
2451
;> ecx = right
2442
;> edx = bottom
2452
;> edx = bottom
2443
;> esi = process number
2453
;> esi = process number
2444
;! corrupted edi
2454
;! corrupted edi
2445
;------------------------------------------------------------------------------
2455
;------------------------------------------------------------------------------
2446
        movzx   edi, word[WIN_POS + esi * 2]
-
 
2447
        shl     edi, 5
-
 
2448
        cmp     [edi + window_data + WDATA.z_modif], ZPOS_ALWAYS_TOP
-
 
2449
        jne     @f
-
 
2450
        ret
-
 
2451
      @@:
-
 
Line -... Line 2456...
-
 
2456
 
-
 
2457
        push    1
2452
 
2458
.go:
2453
        push    esi
2459
        push    esi
2454
        pushfd
2460
        pushfd
Line 2455... Line 2461...
2455
        cli
2461
        cli
2456
 
2462
 
2457
        push    ebp
2463
        push    ebp
2458
        mov     ebp, [TASK_COUNT]
2464
        mov     ebp, [TASK_COUNT]
Line -... Line 2465...
-
 
2465
        cmp     ebp, 1
-
 
2466
        jbe     .exit
-
 
2467
 
-
 
2468
        shl     esi, 5
2459
        cmp     ebp, 1
2469
        cmp     [esi + window_data + WDATA.z_modif], ZPOS_ALWAYS_TOP
2460
        jbe     .exit
2470
        je      .exit
Line 2461... Line 2471...
2461
 
2471
 
2462
        push    eax ;for num layout
2472
        push    eax ;for num layout
2463
        push    edx ecx ebx eax
2473
        push    edx ecx ebx eax
2464
 
2474
 
2465
        movzx   eax, byte [edi + window_data + WDATA.z_modif]
2475
        movsx   eax, byte [esi + window_data + WDATA.z_modif]
2466
        inc     eax
2476
        inc     eax
2467
        mov     dword[esp+14], eax
2477
        mov     dword[esp+10h], eax
2468
;--------------------------------------
2478
;--------------------------------------
Line 2481... Line 2491...
2481
 
2491
 
2482
        add     edi, window_data
2492
        add     edi, window_data
2483
        test    [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
2493
        test    [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
Line 2484... Line 2494...
2484
        jnz     .skip_window
2494
        jnz     .skip_window
2485
 
-
 
2486
        mov     eax, [esp+14]
2495
 
2487
        mov     al, [eax+win_zmodi]
2496
        mov     eax, [esp+10h]
Line 2488... Line 2497...
2488
        cmp     [edi + WDATA.z_modif], al
2497
        cmp     [edi + WDATA.z_modif], al
2489
        jne     .skip_window
2498
        jne     .skip_window
Line 2525... Line 2534...
2525
        jbe     @f
2534
        jbe     @f
2526
        mov     edx, [esp + RECT.bottom]
2535
        mov     edx, [esp + RECT.bottom]
2527
;--------------------------------------
2536
;--------------------------------------
2528
align 4
2537
align 4
2529
@@:
2538
@@:
-
 
2539
        cmp     dword[esp+32], 0
-
 
2540
        je      .set_fl_redraw
-
 
2541
 
2530
        push    esi
2542
        push    esi
2531
        movzx   esi, word[WIN_POS + esi * 2]
2543
        movzx   esi, word[WIN_POS + esi * 2]
2532
        call    window._.set_screen
2544
        call    window._.set_screen
2533
        pop     esi
2545
        pop     esi
-
 
2546
        jmp     @f
2534
 
2547
.set_fl_redraw:
2535
        mov     [edi + WDATA.fl_redraw], 1      ;set redraw flag
2548
        mov     [edi + WDATA.fl_redraw], 1      ;set redraw flag
-
 
2549
     @@:
2536
;--------------------------------------
2550
;--------------------------------------
2537
align 4
2551
align 4
2538
.skip_window:
2552
.skip_window:
2539
        inc     esi
2553
        inc     esi
2540
        dec     ebp
2554
        dec     ebp
2541
        jnz     .next_window
2555
        jnz     .next_window
2542
;--------------------------------------
2556
;--------------------------------------
2543
        inc     dword[esp+14]
2557
        inc     dword[esp+10h]
2544
        cmp     dword[esp+14], ZPOS_ALWAYS_TOP
2558
        cmp     byte[esp+10h], ZPOS_ALWAYS_TOP
2545
        jbe     .layout
2559
        jle     .layout
2546
;-------------------------------------
2560
;-------------------------------------
Line 2547... Line 2561...
2547
 
2561
 
2548
        pop     eax ebx ecx edx
2562
        pop     eax ebx ecx edx
2549
        pop     ebp     ;del num layout
2563
        pop     ebp     ;del num layout
Line 2553... Line 2567...
2553
 
2567
 
2554
        pop     ebp
2568
        pop     ebp
2555
        popfd
2569
        popfd
Line -... Line 2570...
-
 
2570
        pop     esi
2556
        pop     esi
2571