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 |