Subversion Repositories Kolibri OS

Rev

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

Rev 102 Rev 105
Line 976... Line 976...
976
        mov   edi, [0x3004]
976
        mov   edi, [0x3004]
977
        movzx esi, word [0xC400 + edi * 2]
977
        movzx esi, word [0xC400 + edi * 2]
978
        call  setscreen
978
        call  setscreen
979
        popad
979
        popad
Line 980... Line -...
980
 
-
 
981
        cmp   [0xff01], dword 1 ; if > 1 then activate process
-
 
982
        jbe   .not_activate
-
 
983
 
-
 
984
;;;        mov   eax, 10            ; wait for putimages to finish
-
 
985
;;;        call  delay_hs
-
 
986
 
980
 
987
        mov   [edi+31],byte 1  ; redraw flag for app
981
        mov   [edi+31],byte 1  ; redraw flag for app
Line 988... Line 982...
988
        mov   [0xfb44],byte 0  ; mouse down checks
982
        mov   [0xfb44],byte 0  ; mouse down checks
Line 989... Line -...
989
 
-
 
990
        ret
-
 
991
 
-
 
992
     .not_activate:
-
 
993
 
-
 
994
;        mov   eax,5            ; wait for putimages to finish
-
 
995
;        call  delay_hs
-
 
996
 
-
 
997
        mov   [edi+31],byte 1  ; redraw flag for app
-
 
998
 
-
 
999
        mov   ecx, 25 ;100
-
 
1000
     .waitflagdown:
-
 
1001
        dec   ecx
-
 
1002
        jz    .nowait
-
 
1003
;        mov   eax, 2
-
 
1004
;        call  delay_hs
-
 
1005
        cmp   [edi+31], byte 0 ; wait flag to drop
-
 
1006
        jnz   .waitflagdown
-
 
1007
      .nowait:
-
 
1008
 
-
 
1009
;        mov   ecx,10
-
 
1010
;      .wait:
-
 
1011
;        mov   eax,1           ; wait for draw to finish
-
 
1012
;        call  delay_hs
-
 
1013
;        loop  .wait
-
 
1014
 
-
 
1015
        mov   [0xfb44],byte 0
-
 
1016
 
983
 
Line 1017... Line 984...
1017
        ret
984
        ret
Line 1018... Line 985...
1018
 
985
 
Line 1025... Line 992...
1025
        mov   [0xfff4],byte 0  ; no mouse background
992
        mov   [0xfff4],byte 0  ; no mouse background
1026
        mov   [0xfff5],byte 0  ; draw mouse
993
        mov   [0xfff5],byte 0  ; draw mouse
1027
        ret
994
        ret
Line -... Line 995...
-
 
995
 
-
 
996
 
-
 
997
; eax = window number on screen
-
 
998
; corrupts registers and [dl*]
-
 
999
minimize_window:
-
 
1000
        movzx eax, word [0xC400+eax*2]
-
 
1001
        shl   eax, 5
-
 
1002
        add   eax, window_data
-
 
1003
        test  [eax+WDATA.fl_wstate], WSTATE_MINIMIZED
-
 
1004
        jnz   .skip_redrawings
-
 
1005
        pushfd
-
 
1006
        cli
-
 
1007
        or    [eax+WDATA.fl_wstate], WSTATE_MINIMIZED
-
 
1008
        mov   edi, eax
-
 
1009
        call  calculatescreen
-
 
1010
        mov   eax, [edi+WDATA.left]
-
 
1011
        mov   [dlx], eax
-
 
1012
        add   eax, [edi+WDATA.width]
-
 
1013
        mov   [dlxe], eax
-
 
1014
        mov   eax, [edi+WDATA.top]
-
 
1015
        mov   [dly], eax
-
 
1016
        add   eax, [edi+WDATA.height]
-
 
1017
        mov   [dlye], eax
-
 
1018
        xor   esi, esi
-
 
1019
        xor   eax, eax
-
 
1020
        call  redrawscreen
-
 
1021
        popfd
-
 
1022
.skip_redrawings:
-
 
1023
        ret
-
 
1024
 
-
 
1025
; eax = window number on screen
-
 
1026
; corrupts registers and [dl*]
-
 
1027
restore_minimized_window:
-
 
1028
        pushfd
-
 
1029
        cli
-
 
1030
        movzx esi, word [0xC400+eax*2]
-
 
1031
        mov   edi, esi
-
 
1032
        shl   edi, 5
-
 
1033
        add   edi, window_data
-
 
1034
        test  [edi+WDATA.fl_wstate], WSTATE_MINIMIZED
-
 
1035
        jz    .skip_redrawings
-
 
1036
        mov   [edi+WDATA.fl_redraw], 1
-
 
1037
        and   [edi+WDATA.fl_wstate], not WSTATE_MINIMIZED
-
 
1038
        cmp   eax, [0x3004] ; the uppermost window
-
 
1039
        jnz   .no_uppermost
-
 
1040
        mov   eax, [edi+WDATA.left]
-
 
1041
        mov   ebx, [edi+WDATA.top]
-
 
1042
        mov   ecx, eax
-
 
1043
        mov   edx, ebx
-
 
1044
        add   ecx, [edi+WDATA.width]
-
 
1045
        add   edx, [edi+WDATA.height]
-
 
1046
        call  setscreen
-
 
1047
        jmp   .done
-
 
1048
.no_uppermost:
-
 
1049
        call  calculatescreen
-
 
1050
.done:
-
 
1051
        mov   [0xfff4],byte 0 ; no mouse under
-
 
1052
.skip_redrawings:
-
 
1053
        popfd
-
 
1054
        ret
1028
 
1055
 
1029
 
1056
 
1030
iglobal
1057
iglobal
1031
  window_moving   db 'K : Window - move/resize',13,10,0
1058
  window_moving   db 'K : Window - move/resize',13,10,0
Line 1032... Line 1059...
1032
  window_moved    db 'K : Window - done',13,10,0
1059
  window_moved    db 'K : Window - done',13,10,0
1033
endg
1060
endg
1034
 
1061
 
1035
; check window touch
1062
; check window touch
Line 1036... Line 1063...
1036
align 4
1063
align 4
1037
checkwindows:
1064
checkwindows:
1038
        pushad
1065
        pushad
1039
 
1066
 
1040
        cmp  [0xff01],dword 1  ; activate request from app ?
1067
        cmp   [window_minimize], 0
1041
        jbe  .no_activate_request
1068
        je    .no_minimizing
1042
        mov  edi,[0xff01]     ; process number
-
 
1043
        shl  edi,5
1069
        mov   eax, [0x3004]       ; the uppermost window
1044
        add  edi,window_data
1070
        mov   bl, 0
1045
        mov  ebx,[0xff01]
-
 
1046
        movzx esi, word [0xC000 + ebx * 2]
1071
        xchg  [window_minimize], bl
1047
        lea  esi, [0xC400 + esi * 2]
-
 
1048
        call waredraw
1072
        cmp   bl, 1
-
 
1073
        jne   .restore
1049
 
1074
        call  minimize_window
1050
        mov  [0xff01],dword 0  ; activated
-
 
1051
 
1075
        jmp   .continue
Line 1052... Line 1076...
1052
        popad
1076
  .restore:
1053
        ret
1077
        call  restore_minimized_window
1054
 
-
 
1055
    .no_activate_request:
-
 
1056
    
-
 
1057
        cmp   [0xfb40],byte 0    ; mouse buttons pressed ?
-
 
1058
        jne   .mouse_buttons_pressed
-
 
1059
        cmp   [window_minimize],0
-
 
1060
        je   .no_activate_request_2
-
 
1061
        cmp   [window_minimize],1
-
 
1062
        je    .mouse_buttons_pressed
-
 
1063
        mov   esi,[0x3004]
-
 
1064
        movzx edi, word [0xC400 + esi * 2]
-
 
1065
        shl   edi, 5
-
 
1066
        add   edi, window_data
1078
  .continue:
1067
        test    [edi+WDATA.fl_wstate],WSTATE_MINIMIZED
1079
  .no_minimizing:
1068
        jnz     .mouse_buttons_pressed
-
 
1069
    .no_activate_request_2:
1080
 
Line 1070... Line 1081...
1070
        mov   [window_minimize],0
1081
        cmp   [0xfb40],byte 0    ; mouse buttons pressed ?
1071
        popad
1082
        jne   .mouse_buttons_pressed
Line 1072... Line 1083...
1072
        ret
1083
        popad
1073
 
1084
        ret
1074
    .mouse_buttons_pressed:
1085
    .mouse_buttons_pressed:
1075
 
-
 
-
 
1086
 
1076
        mov   esi,[0x3004]
1087
        mov   esi,[0x3004]
1077
        inc   esi
1088
        inc   esi
1078
 
1089
 
1079
      cwloop:
1090
      cwloop:
1080
        cmp   esi,2
1091
        cmp   esi,2
1081
        jb   .exit
1092
        jb   .exit
1082
        .temp_window_minimize_1:
1093
 
Line 1083... Line 1094...
1083
        dec   esi
1094
        dec   esi
1084
        movzx edi, word [0xC400 + esi * 2] ; ebx
1095
        movzx edi, word [0xC400 + esi * 2] ; ebx
1085
        shl   edi, 5
-
 
1086
        add   edi, window_data
-
 
1087
;        mov   edi, ebx
1096
        shl   edi, 5
1088
        mov   ecx, [edi+0]
1097
        add   edi, window_data
Line 1089... Line 1098...
1089
        mov   edx, [edi+4]
1098
;        mov   edi, ebx
1090
 
1099
        mov   ecx, [edi+0]
Line 1107... Line 1116...
1107
        cmp   eax, ecx
1116
        cmp   eax, ecx
1108
        jae   cwloop
1117
        jae   cwloop
1109
        cmp   ebx, edx
1118
        cmp   ebx, edx
1110
        jae   cwloop
1119
        jae   cwloop
Line 1111... Line -...
1111
 
-
 
1112
      .window_minimize_no_check_mouse:
-
 
1113
 
1120
 
1114
        pushad
1121
        pushad
1115
        mov   eax, esi
1122
        mov   eax, esi
1116
        mov   ebx, [0x3004]
1123
        mov   ebx, [0x3004]
1117
        cmp   eax, ebx      ; is this window active?
1124
        cmp   eax, ebx      ; is this window active?
Line 1170... Line 1177...
1170
        push  esi
1177
        push  esi
1171
        mov   esi, window_moving
1178
        mov   esi, window_moving
1172
        call  sys_msg_board_str
1179
        call  sys_msg_board_str
1173
        pop   esi
1180
        pop   esi
Line 1174... Line 1181...
1174
 
1181
 
1175
        mov   ecx, [timer_ticks] ;[0xfdf0]    ; double-click ?
1182
        mov   ecx, [timer_ticks]     ; double-click ?
1176
        mov   edx, ecx
1183
        mov   edx, ecx
1177
        sub   edx, [latest_window_touch]
1184
        sub   edx, [latest_window_touch]
1178
        mov   [latest_window_touch], ecx
1185
        mov   [latest_window_touch], ecx
Line 1367... Line 1374...
1367
 
1374
 
Line 1368... Line 1375...
1368
    @@: mov     [reposition],cl
1375
    @@: mov     [reposition],cl
1369
 
1376
 
1370
        cmp   [reposition],1         ; save new position and size
-
 
1371
        jne   no_bounds_save
1377
        cmp   [reposition],1         ; save new position and size
1372
        ; 
1378
        jne   no_bounds_save
1373
        push  esi edi ecx
1379
        push  esi edi ecx
1374
        mov   esi,edi
1380
        mov   esi,edi
1375
        mov   ecx,2
1381
        mov   ecx,2
Line 1381... Line 1387...
1381
        shl   edi,8
1387
        shl   edi,8
1382
        add   edi,0x80000+0x90
1388
        add   edi,0x80000+0x90
1383
        cld
1389
        cld
1384
        rep   movsd
1390
        rep   movsd
1385
        pop   ecx edi esi
1391
        pop   ecx edi esi
1386
        ; 
-
 
1387
      no_bounds_save:
1392
      no_bounds_save:
Line 1388... Line 1393...
1388
 
1393
 
Line 1389... Line 1394...
1389
        pushad                             ; WINDOW SHADE/FULLSCREEN
1394
        pushad                             ; WINDOW SHADE/FULLSCREEN
Line 1394... Line 1399...
1394
        sub   edx,window_data
1399
        sub   edx,window_data
1395
        shr   edx,5
1400
        shr   edx,5
1396
        shl   edx,8
1401
        shl   edx,8
1397
        add   edx,0x80000                 ; process base at 0x80000+
1402
        add   edx,0x80000                 ; process base at 0x80000+
Line 1398... Line -...
1398
 
-
 
1399
        cmp     [window_minimize],0
-
 
1400
        je      no_wnd_minimize_restore
-
 
1401
        mov     [reposition],1
-
 
1402
  wnd_minimize:
-
 
1403
        cmp     [window_minimize],1
-
 
1404
        jne     wnd_restore
-
 
1405
        or      [edi+WDATA.fl_wstate],WSTATE_MINIMIZED
-
 
1406
        jmp     no_wnd_minimize_restore
-
 
1407
  wnd_restore:
-
 
1408
        cmp     [window_minimize],2
-
 
1409
        jne     no_wnd_minimize_restore
-
 
1410
        and     [edi+WDATA.fl_wstate],not WSTATE_MINIMIZED
-
 
1411
  no_wnd_minimize_restore:
-
 
1412
 
-
 
1413
 
1403
 
1414
        cmp   [do_resize],2               ; window shade ?
1404
        cmp   [do_resize],2               ; window shade ?
1415
        jne   no_window_shade
1405
        jne   no_window_shade
Line 1416... Line 1406...
1416
        mov   [reposition],1
1406
        mov   [reposition],1
Line 1525... Line 1515...
1525
        mov    esi,window_moved
1515
        mov    esi,window_moved
1526
        call   sys_msg_board_str
1516
        call   sys_msg_board_str
Line 1527... Line 1517...
1527
 
1517
 
Line 1528... Line -...
1528
        popad
-
 
1529
 
-
 
1530
       mov   [window_minimize],0
1518
        popad
Line 1531... Line 1519...
1531
 
1519
 
1532
        ret
1520
        ret