Rev 9045 | Rev 9709 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9045 | Rev 9477 | ||
---|---|---|---|
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: 9045 $ |
9 | $Revision: 9477 $ |
10 | 10 | ||
11 | ;============================================================================== |
11 | ;============================================================================== |
Line 12... | Line 12... | ||
12 | ;///// public functions /////////////////////////////////////////////////////// |
12 | ; public functions |
Line 13... | Line 13... | ||
13 | ;============================================================================== |
13 | ;============================================================================== |
14 | 14 | ||
15 | window.BORDER_SIZE = 5 |
15 | window.BORDER_SIZE = 5 |
16 | 16 | ||
17 | uglobal |
- | |
18 | common_colours rd 48 |
- | |
19 | draw_limits RECT |
- | |
20 | endg |
17 | uglobal |
- | 18 | common_colours rd 48 |
|
- | 19 | draw_limits RECT |
|
- | 20 | endg |
|
- | 21 | ;------------------------------------------------------------------------------ |
|
21 | 22 | ||
22 | ;------------------------------------------------------------------------------ |
23 | |
23 | syscall_draw_window: ;///// system function 0 ///////////////////////////////// |
24 | align 4 |
24 | ;------------------------------------------------------------------------------ |
25 | syscall_draw_window: ; system function 0 |
25 | mov eax, edx |
26 | mov eax, edx |
Line 67... | Line 68... | ||
67 | jmp window._.draw_window_caption.2 |
68 | jmp window._.draw_window_caption.2 |
68 | ;-------------------------------------- |
69 | ;-------------------------------------- |
69 | .exit: |
70 | .exit: |
70 | ret |
71 | ret |
71 | ;------------------------------------------------------------------------------ |
72 | ;------------------------------------------------------------------------------ |
- | 73 | ||
- | 74 | ||
- | 75 | align 4 |
|
- | 76 | ; system function 1 |
|
- | 77 | syscall_setpixel: |
|
- | 78 | mov eax, ebx |
|
- | 79 | mov ebx, ecx |
|
- | 80 | mov ecx, edx |
|
- | 81 | mov edx, [TASK_BASE] |
|
- | 82 | add eax, [edx-twdw+WDATA.box.left] |
|
- | 83 | add ebx, [edx-twdw+WDATA.box.top] |
|
- | 84 | mov edi, [current_slot] |
|
- | 85 | add eax, [edi+APPDATA.wnd_clientbox.left] |
|
- | 86 | add ebx, [edi+APPDATA.wnd_clientbox.top] |
|
- | 87 | xor edi, edi ; no force |
|
- | 88 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
|
- | 89 | jmp __sys_putpixel |
|
- | 90 | ;------------------------------------------------------------------------------ |
|
- | 91 | ||
- | 92 | ||
- | 93 | align 4 |
|
- | 94 | ; system function 4 |
|
- | 95 | syscall_writetext: |
|
- | 96 | ||
- | 97 | push esi ;check pointer on kernel address. |
|
- | 98 | test ecx, 0x80000000 |
|
- | 99 | jz @f |
|
- | 100 | xor esi, esi |
|
- | 101 | @@: |
|
- | 102 | stdcall is_region_userspace, edx, esi |
|
- | 103 | pop esi |
|
- | 104 | jnz .err |
|
- | 105 | ||
- | 106 | mov eax, [TASK_BASE] |
|
- | 107 | mov ebp, [eax-twdw+WDATA.box.left] |
|
- | 108 | push esi |
|
- | 109 | mov esi, [current_slot] |
|
- | 110 | add ebp, [esi+APPDATA.wnd_clientbox.left] |
|
- | 111 | shl ebp, 16 |
|
- | 112 | add ebp, [eax-twdw+WDATA.box.top] |
|
- | 113 | add bp, word[esi+APPDATA.wnd_clientbox.top] |
|
- | 114 | pop esi |
|
- | 115 | test ecx, 0x08000000 ; redirect the output to the user area |
|
- | 116 | jnz @f |
|
- | 117 | add ebx, ebp |
|
- | 118 | align 4 |
|
- | 119 | @@: |
|
- | 120 | mov eax, edi |
|
72 | syscall_display_settings: ;///// system function 48 /////////////////////////// |
121 | test ecx, 0x08000000 ; redirect the output to the user area |
- | 122 | jnz @f |
|
- | 123 | xor edi, edi |
|
- | 124 | jmp dtext |
|
- | 125 | ||
- | 126 | @@: ; check pointer |
|
- | 127 | stdcall is_region_userspace, edi, 0 |
|
- | 128 | jnz .err |
|
- | 129 | jmp dtext |
|
- | 130 | .err: |
|
- | 131 | ret |
|
- | 132 | ;------------------------------------------------------------------------------ |
|
- | 133 | ||
- | 134 | ||
- | 135 | align 4 |
|
- | 136 | ; system function 13 |
|
- | 137 | syscall_drawrect: |
|
- | 138 | mov edi, edx ; color + gradient |
|
- | 139 | and edi, 0x80FFFFFF |
|
- | 140 | test bx, bx ; x.size |
|
- | 141 | je .drectr |
|
- | 142 | test cx, cx ; y.size |
|
- | 143 | je .drectr |
|
- | 144 | ||
- | 145 | mov eax, ebx ; bad idea |
|
- | 146 | mov ebx, ecx |
|
- | 147 | ||
- | 148 | movzx ecx, ax ; ecx - x.size |
|
- | 149 | shr eax, 16 ; eax - x.coord |
|
- | 150 | movzx edx, bx ; edx - y.size |
|
- | 151 | shr ebx, 16 ; ebx - y.coord |
|
- | 152 | mov esi, [current_slot] |
|
- | 153 | ||
- | 154 | add eax, [esi + APPDATA.wnd_clientbox.left] |
|
- | 155 | add ebx, [esi + APPDATA.wnd_clientbox.top] |
|
- | 156 | add ecx, eax |
|
- | 157 | add edx, ebx |
|
- | 158 | jmp vesa20_drawbar |
|
- | 159 | .drectr: |
|
- | 160 | ret |
|
- | 161 | ;------------------------------------------------------------------------------ |
|
- | 162 | ||
- | 163 | align 4 |
|
- | 164 | ; system function 38 |
|
- | 165 | syscall_drawline: |
|
- | 166 | mov edi, [TASK_BASE] |
|
- | 167 | movzx eax, word[edi-twdw+WDATA.box.left] |
|
- | 168 | mov ebp, eax |
|
- | 169 | mov esi, [current_slot] |
|
- | 170 | add ebp, [esi+APPDATA.wnd_clientbox.left] |
|
- | 171 | add ax, word[esi+APPDATA.wnd_clientbox.left] |
|
- | 172 | add ebp, ebx |
|
- | 173 | shl eax, 16 |
|
- | 174 | movzx ebx, word[edi-twdw+WDATA.box.top] |
|
- | 175 | add eax, ebp |
|
- | 176 | mov ebp, ebx |
|
- | 177 | add ebp, [esi+APPDATA.wnd_clientbox.top] |
|
- | 178 | add bx, word[esi+APPDATA.wnd_clientbox.top] |
|
- | 179 | add ebp, ecx |
|
- | 180 | shl ebx, 16 |
|
- | 181 | xor edi, edi |
|
- | 182 | add ebx, ebp |
|
- | 183 | mov ecx, edx |
|
- | 184 | jmp __sys_draw_line |
|
73 | ;------------------------------------------------------------------------------ |
185 | ;------------------------------------------------------------------------------ |
- | 186 | ||
- | 187 | ||
- | 188 | align 4 |
|
- | 189 | ; system function 48 |
|
- | 190 | syscall_display_settings: |
|
74 | cmp ebx, 13 |
191 | cmp ebx, 13 |
75 | ja .ret |
192 | ja .ret |
76 | jmp dword[.ftable + ebx*4] |
193 | jmp dword[.ftable + ebx*4] |
Line 77... | Line 194... | ||
77 | 194 | ||
Line 278... | Line 395... | ||
278 | call kernel_free |
395 | call kernel_free |
279 | call .calculateScreen |
396 | call .calculateScreen |
280 | jmp .redrawScreen |
397 | jmp .redrawScreen |
Line 281... | Line 398... | ||
281 | 398 | ||
- | 399 | ;------------------------------------------------------------------------------ |
|
- | 400 | ||
282 | ;------------------------------------------------------------------------------ |
401 | align 4 |
283 | syscall_set_window_shape: ;///// system function 50 /////////////////////////// |
- | |
284 | ;------------------------------------------------------------------------------ |
402 | ; system function 50 |
285 | ;; Set window shape address: |
403 | ;; Set window shape address: |
286 | ;> ebx = 0 |
404 | ;> ebx = 0 |
287 | ;> ecx = shape data address |
405 | ;> ecx = shape data address |
288 | ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
406 | ; -------------------------- |
289 | ;; Set window shape scale: |
407 | ;; Set window shape scale: |
290 | ;> ebx = 1 |
408 | ;> ebx = 1 |
291 | ;> ecx = scale power (resulting scale is 2^ebx) |
409 | ;> ecx = scale power (resulting scale is 2^ebx) |
292 | ;------------------------------------------------------------------------------ |
410 | syscall_set_window_shape: |
Line 293... | Line 411... | ||
293 | mov edi, [current_slot] |
411 | mov edi, [current_slot] |
294 | 412 | ||
295 | test ebx, ebx |
413 | test ebx, ebx |
Line 304... | Line 422... | ||
304 | ;-------------------------------------- |
422 | ;-------------------------------------- |
305 | align 4 |
423 | align 4 |
306 | .exit: |
424 | .exit: |
307 | ret |
425 | ret |
308 | ;------------------------------------------------------------------------------ |
426 | ;------------------------------------------------------------------------------ |
- | 427 | ||
309 | align 4 |
428 | align 4 |
310 | ;------------------------------------------------------------------------------ |
- | |
311 | syscall_move_window: ;///// system function 67 //////////////////////////////// |
429 | ; system function 67 |
312 | ;------------------------------------------------------------------------------ |
- | |
313 | ;? |
430 | syscall_move_window: |
314 | ;------------------------------------------------------------------------------ |
- | |
315 | mov edi, [current_slot_idx] |
431 | mov edi, [current_slot_idx] |
316 | shl edi, 5 |
432 | shl edi, 5 |
317 | add edi, window_data |
433 | add edi, window_data |
Line 318... | Line 434... | ||
318 | 434 | ||
Line 363... | Line 479... | ||
363 | add esp, sizeof.BOX |
479 | add esp, sizeof.BOX |
Line 364... | Line 480... | ||
364 | 480 | ||
365 | .exit: |
481 | .exit: |
366 | ret |
482 | ret |
- | 483 | ;------------------------------------------------------------------------------ |
|
367 | ;------------------------------------------------------------------------------ |
484 | |
368 | syscall_window_settings: ;///// system function 71 //////////////////////////// |
485 | ; system function 71 |
369 | ;------------------------------------------------------------------------------ |
486 | syscall_window_settings: |
370 | mov edi, [current_slot_idx] |
487 | mov edi, [current_slot_idx] |
371 | shl edi, 5 |
488 | shl edi, 5 |
372 | or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
489 | or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
373 | cmp ebx, 2 |
490 | cmp ebx, 2 |
Line 380... | Line 497... | ||
380 | @@: |
497 | @@: |
381 | mov [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx |
498 | mov [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx |
382 | mov [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl |
499 | mov [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl |
383 | jmp window._.draw_window_caption |
500 | jmp window._.draw_window_caption |
384 | ;------------------------------------------------------------------------------ |
501 | ;------------------------------------------------------------------------------ |
- | 502 | ||
385 | align 4 |
503 | align 4 |
386 | set_window_defaults: ;///////////////////////////////////////////////////////// |
504 | set_window_defaults: |
387 | ;------------------------------------------------------------------------------ |
- | |
388 | mov byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable |
505 | mov byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable |
389 | push eax ecx |
506 | push eax ecx |
390 | xor eax, eax |
507 | xor eax, eax |
391 | mov ecx, WIN_STACK |
508 | mov ecx, WIN_STACK |
392 | ;-------------------------------------- |
509 | ;-------------------------------------- |
Line 403... | Line 520... | ||
403 | pop ecx eax |
520 | pop ecx eax |
404 | ret |
521 | ret |
405 | ;------------------------------------------------------------------------------ |
522 | ;------------------------------------------------------------------------------ |
Line 406... | Line 523... | ||
406 | 523 | ||
407 | align 4 |
- | |
408 | ;------------------------------------------------------------------------------ |
- | |
409 | calculatescreen: ;///////////////////////////////////////////////////////////// |
- | |
410 | ;------------------------------------------------------------------------------ |
524 | align 4 |
411 | ;? Scan all windows from bottom to top, calling `setscreen` for each one |
525 | ;? Scan all windows from bottom to top, calling `setscreen` for each one |
412 | ;? intersecting given screen area |
- | |
413 | ;------------------------------------------------------------------------------ |
526 | ;? intersecting given screen area |
414 | ;> eax = left |
527 | ;> eax = left |
415 | ;> ebx = top |
528 | ;> ebx = top |
416 | ;> ecx = right |
529 | ;> ecx = right |
417 | ;> edx = bottom |
530 | ;> edx = bottom |
418 | ;------------------------------------------------------------------------------ |
531 | calculatescreen: |
419 | push esi |
532 | push esi |
420 | pushfd |
533 | pushfd |
Line 421... | Line 534... | ||
421 | cli |
534 | cli |
Line 524... | Line 637... | ||
524 | inc [_display.mask_seqno] |
637 | inc [_display.mask_seqno] |
525 | popfd |
638 | popfd |
526 | pop esi |
639 | pop esi |
527 | ret |
640 | ret |
528 | ;------------------------------------------------------------------------------ |
641 | ;------------------------------------------------------------------------------ |
- | 642 | ||
- | 643 | ||
529 | align 4 |
644 | align 4 |
530 | ;------------------------------------------------------------------------------ |
- | |
531 | repos_windows: ;/////////////////////////////////////////////////////////////// |
- | |
532 | ;------------------------------------------------------------------------------ |
- | |
533 | ;? |
645 | repos_windows: |
534 | ;------------------------------------------------------------------------------ |
- | |
535 | mov ecx, [thread_count] |
646 | mov ecx, [thread_count] |
536 | mov edi, window_data + sizeof.WDATA * 2 |
647 | mov edi, window_data + sizeof.WDATA * 2 |
537 | call force_redraw_background |
648 | call force_redraw_background |
538 | dec ecx |
649 | dec ecx |
539 | jle .exit |
650 | jle .exit |
Line 600... | Line 711... | ||
600 | sub eax, [screen_workarea.bottom] |
711 | sub eax, [screen_workarea.bottom] |
601 | neg eax |
712 | neg eax |
602 | mov [edi + WDATA.box.height], eax |
713 | mov [edi + WDATA.box.height], eax |
603 | jmp .fix_client_box |
714 | jmp .fix_client_box |
604 | ;------------------------------------------------------------------------------ |
715 | ;------------------------------------------------------------------------------ |
- | 716 | ||
- | 717 | ||
605 | align 4 |
718 | align 4 |
606 | ;------------------------------------------------------------------------------ |
- | |
607 | draw_rectangle: ;////////////////////////////////////////////////////////////// |
- | |
608 | ;------------------------------------------------------------------------------ |
- | |
609 | ;> eax = pack[16(left), 16(right)] |
719 | ;> eax = pack[16(left), 16(right)] |
610 | ;> ebx = pack[16(top), 16(bottom)] |
720 | ;> ebx = pack[16(top), 16(bottom)] |
611 | ;> esi = color |
721 | ;> esi = color |
612 | ; ?? RR GG BB ; 0x01000000 negation |
722 | ; ?? RR GG BB ; 0x01000000 negation |
613 | ; ; 0x02000000 used for draw_rectangle without top line |
723 | ; ; 0x02000000 used for draw_rectangle without top line |
614 | ; ; for example drawwindow_III and drawwindow_IV |
724 | ; ; for example drawwindow_III and drawwindow_IV |
615 | ;------------------------------------------------------------------------------ |
- | |
- | 725 | draw_rectangle: |
|
616 | push eax ebx ecx edi |
726 | push eax ebx ecx edi |
Line 617... | Line 727... | ||
617 | 727 | ||
618 | xor edi, edi |
728 | xor edi, edi |
619 | ;-------------------------------------- |
729 | ;-------------------------------------- |
Line 667... | Line 777... | ||
667 | push eax ebx ecx edi |
777 | push eax ebx ecx edi |
668 | xor edi, edi |
778 | xor edi, edi |
669 | inc edi |
779 | inc edi |
670 | jmp .flags_set |
780 | jmp .flags_set |
671 | ;------------------------------------------------------------------------------ |
781 | ;------------------------------------------------------------------------------ |
- | 782 | ||
- | 783 | ||
672 | align 4 |
784 | align 4 |
673 | ;------------------------------------------------------------------------------ |
- | |
674 | drawwindow_I_caption: ;//////////////////////////////////////////////////////// |
- | |
675 | ;------------------------------------------------------------------------------ |
- | |
676 | ;? |
785 | drawwindow_I_caption: |
677 | ;------------------------------------------------------------------------------ |
- | |
678 | push [edx + WDATA.cl_titlebar] |
786 | push [edx + WDATA.cl_titlebar] |
679 | mov esi, edx |
787 | mov esi, edx |
Line 680... | Line 788... | ||
680 | 788 | ||
681 | mov edx, [esi + WDATA.box.top] |
789 | mov edx, [esi + WDATA.box.top] |
Line 722... | Line 830... | ||
722 | 830 | ||
723 | add esp, 4 |
831 | add esp, 4 |
724 | pop [esi + WDATA.cl_titlebar] |
832 | pop [esi + WDATA.cl_titlebar] |
725 | ret |
833 | ret |
- | 834 | ;------------------------------------------------------------------------------ |
|
- | 835 | ||
726 | ;------------------------------------------------------------------------------ |
836 | |
727 | align 4 |
- | |
728 | ;------------------------------------------------------------------------------ |
- | |
729 | drawwindow_I: ;//////////////////////////////////////////////////////////////// |
- | |
730 | ;------------------------------------------------------------------------------ |
837 | align 4 |
731 | ;? |
- | |
732 | ;------------------------------------------------------------------------------ |
838 | drawwindow_I: |
Line 733... | Line 839... | ||
733 | pushad |
839 | pushad |
Line 734... | Line 840... | ||
734 | 840 | ||
Line 770... | Line 876... | ||
770 | align 4 |
876 | align 4 |
771 | .exit: |
877 | .exit: |
772 | popad |
878 | popad |
773 | ret |
879 | ret |
774 | ;------------------------------------------------------------------------------ |
880 | ;------------------------------------------------------------------------------ |
- | 881 | ||
- | 882 | ||
775 | align 4 |
883 | align 4 |
776 | ;------------------------------------------------------------------------------ |
- | |
777 | drawwindow_III_caption: ;///////////////////////////////////////////////////// |
- | |
778 | ;------------------------------------------------------------------------------ |
- | |
779 | ;? |
884 | drawwindow_III_caption: |
780 | ;------------------------------------------------------------------------------ |
- | |
781 | mov ecx, [edx + WDATA.cl_titlebar] |
885 | mov ecx, [edx + WDATA.cl_titlebar] |
782 | push ecx |
886 | push ecx |
783 | mov esi, edx |
887 | mov esi, edx |
784 | mov edx, [esi + WDATA.box.top] |
888 | mov edx, [esi + WDATA.box.top] |
785 | add edx, 4 |
889 | add edx, 4 |
Line 831... | Line 935... | ||
831 | 935 | ||
832 | add esp, 4 |
936 | add esp, 4 |
833 | pop [esi + WDATA.cl_titlebar] |
937 | pop [esi + WDATA.cl_titlebar] |
834 | ret |
938 | ret |
- | 939 | ;------------------------------------------------------------------------------ |
|
- | 940 | ||
835 | ;------------------------------------------------------------------------------ |
941 | |
836 | align 4 |
- | |
837 | ;------------------------------------------------------------------------------ |
- | |
838 | drawwindow_III: ;////////////////////////////////////////////////////////////// |
- | |
839 | ;------------------------------------------------------------------------------ |
942 | align 4 |
840 | ;? |
- | |
841 | ;------------------------------------------------------------------------------ |
943 | drawwindow_III: |
Line 842... | Line 944... | ||
842 | pushad |
944 | pushad |
Line 843... | Line 945... | ||
843 | 945 | ||
Line 904... | Line 1006... | ||
904 | align 4 |
1006 | align 4 |
905 | .exit: |
1007 | .exit: |
906 | popad |
1008 | popad |
907 | ret |
1009 | ret |
908 | ;------------------------------------------------------------------------------ |
1010 | ;------------------------------------------------------------------------------ |
- | 1011 | ||
- | 1012 | ||
909 | align 4 |
1013 | align 4 |
910 | ;------------------------------------------------------------------------------ |
- | |
911 | waredraw: ;//////////////////////////////////////////////////////////////////// |
- | |
912 | ;------------------------------------------------------------------------------ |
- | |
913 | ;? Activate window, redrawing if necessary |
1014 | ;? Activate window, redrawing if necessary |
914 | ;------------------------------------------------------------------------------ |
- | |
- | 1015 | waredraw: |
|
915 | push -1 |
1016 | push -1 |
916 | mov eax, [thread_count] |
1017 | mov eax, [thread_count] |
917 | lea eax, [WIN_POS + eax * 2] |
1018 | lea eax, [WIN_POS + eax * 2] |
918 | cmp eax, esi |
1019 | cmp eax, esi |
919 | pop eax |
1020 | pop eax |
Line 968... | Line 1069... | ||
968 | align 4 |
1069 | align 4 |
969 | .exit: |
1070 | .exit: |
970 | inc eax |
1071 | inc eax |
971 | ret |
1072 | ret |
972 | ;------------------------------------------------------------------------------ |
1073 | ;------------------------------------------------------------------------------ |
- | 1074 | ||
- | 1075 | ||
973 | align 4 |
1076 | align 4 |
974 | ;------------------------------------------------------------------------------ |
- | |
975 | minimize_all_window: |
1077 | minimize_all_window: |
976 | push ebx ecx edx esi edi |
1078 | push ebx ecx edx esi edi |
977 | pushfd |
1079 | pushfd |
978 | cli |
1080 | cli |
979 | xor edx, edx |
1081 | xor edx, edx |
Line 1019... | Line 1121... | ||
1019 | pop edi esi edx ecx ebx |
1121 | pop edi esi edx ecx ebx |
1020 | ret |
1122 | ret |
1021 | ;------------------------------------------------------------------------------ |
1123 | ;------------------------------------------------------------------------------ |
1022 | align 4 |
1124 | align 4 |
1023 | ;------------------------------------------------------------------------------ |
1125 | ;------------------------------------------------------------------------------ |
1024 | minimize_window: ;///////////////////////////////////////////////////////////// |
- | |
1025 | ;------------------------------------------------------------------------------ |
- | |
- | 1126 | ||
1026 | ;> eax = window number on screen |
1127 | ;> eax = window number on screen |
1027 | ;------------------------------------------------------------------------------ |
- | |
1028 | ;# corrupts [dl*] |
1128 | ;# corrupts [dl*] |
1029 | ;------------------------------------------------------------------------------ |
1129 | minimize_window: |
1030 | push edi |
1130 | push edi |
1031 | pushfd |
1131 | pushfd |
1032 | cli |
1132 | cli |
Line 1033... | Line 1133... | ||
1033 | 1133 | ||
Line 1079... | Line 1179... | ||
1079 | .exit: |
1179 | .exit: |
1080 | popfd |
1180 | popfd |
1081 | pop edi |
1181 | pop edi |
1082 | ret |
1182 | ret |
1083 | ;------------------------------------------------------------------------------ |
1183 | ;------------------------------------------------------------------------------ |
- | 1184 | ||
- | 1185 | ||
1084 | align 4 |
1186 | align 4 |
1085 | ;------------------------------------------------------------------------------ |
- | |
1086 | restore_minimized_window: ;//////////////////////////////////////////////////// |
- | |
1087 | ;------------------------------------------------------------------------------ |
- | |
1088 | ;> eax = window number on screen |
1187 | ;> eax = window number on screen |
1089 | ;------------------------------------------------------------------------------ |
- | |
1090 | ;# corrupts [dl*] |
1188 | ;# corrupts [dl*] |
1091 | ;------------------------------------------------------------------------------ |
1189 | restore_minimized_window: |
1092 | pushad |
1190 | pushad |
1093 | pushfd |
1191 | pushfd |
1094 | cli |
1192 | cli |
Line 1095... | Line 1193... | ||
1095 | 1193 | ||
Line 1132... | Line 1230... | ||
1132 | ret |
1230 | ret |
1133 | ;------------------------------------------------------------------------------ |
1231 | ;------------------------------------------------------------------------------ |
1134 | align 4 |
1232 | align 4 |
1135 | ; TODO: remove this proc |
1233 | ; TODO: remove this proc |
1136 | ;------------------------------------------------------------------------------ |
1234 | ;------------------------------------------------------------------------------ |
1137 | window_check_events: ;///////////////////////////////////////////////////////// |
- | |
1138 | ;------------------------------------------------------------------------------ |
- | |
- | 1235 | ||
- | 1236 | ||
1139 | ;? |
1237 | window_check_events: |
1140 | ;------------------------------------------------------------------------------ |
- | |
1141 | ; do we have window minimize/restore request? |
1238 | ; do we have window minimize/restore request? |
1142 | cmp [window_minimize], 0 |
1239 | cmp [window_minimize], 0 |
1143 | je .exit |
1240 | je .exit |
Line 1144... | Line 1241... | ||
1144 | 1241 | ||
Line 1157... | Line 1254... | ||
1157 | ;-------------------------------------- |
1254 | ;-------------------------------------- |
1158 | align 4 |
1255 | align 4 |
1159 | .exit: |
1256 | .exit: |
1160 | ret |
1257 | ret |
1161 | ;------------------------------------------------------------------------------ |
1258 | ;------------------------------------------------------------------------------ |
- | 1259 | ||
- | 1260 | ||
1162 | align 4 |
1261 | align 4 |
1163 | ;------------------------------------------------------------------------------ |
- | |
1164 | sys_window_maximize_handler: ;///////////////////////////////////////////////// |
- | |
1165 | ;------------------------------------------------------------------------------ |
- | |
1166 | ;? |
- | |
1167 | ;------------------------------------------------------------------------------ |
- | |
1168 | ;> esi = process slot |
1262 | ;> esi = process slot |
1169 | ;------------------------------------------------------------------------------ |
1263 | sys_window_maximize_handler: |
1170 | mov edi, esi |
1264 | mov edi, esi |
1171 | shl edi, 5 |
1265 | shl edi, 5 |
1172 | add edi, window_data |
1266 | add edi, window_data |
Line 1173... | Line 1267... | ||
1173 | 1267 | ||
Line 1225... | Line 1319... | ||
1225 | align 4 |
1319 | align 4 |
1226 | .exit: |
1320 | .exit: |
1227 | inc [_display.mask_seqno] |
1321 | inc [_display.mask_seqno] |
1228 | ret |
1322 | ret |
1229 | ;------------------------------------------------------------------------------ |
1323 | ;------------------------------------------------------------------------------ |
- | 1324 | ||
- | 1325 | ||
1230 | align 4 |
1326 | align 4 |
1231 | ;------------------------------------------------------------------------------ |
- | |
1232 | sys_window_rollup_handler: ;/////////////////////////////////////////////////// |
- | |
1233 | ;------------------------------------------------------------------------------ |
- | |
1234 | ;? |
- | |
1235 | ;------------------------------------------------------------------------------ |
- | |
1236 | ;> esi = process slot |
1327 | ;> esi = process slot |
1237 | ;------------------------------------------------------------------------------ |
1328 | sys_window_rollup_handler: |
1238 | mov edx, esi |
1329 | mov edx, esi |
1239 | shl edx, 8 |
1330 | shl edx, 8 |
1240 | add edx, SLOT_BASE |
1331 | add edx, SLOT_BASE |
Line 1241... | Line 1332... | ||
1241 | 1332 | ||
Line 1279... | Line 1370... | ||
1279 | add esp, sizeof.BOX |
1370 | add esp, sizeof.BOX |
1280 | ret |
1371 | ret |
1281 | ;------------------------------------------------------------------------------ |
1372 | ;------------------------------------------------------------------------------ |
1282 | align 4 |
1373 | align 4 |
1283 | ;------------------------------------------------------------------------------ |
1374 | ;------------------------------------------------------------------------------ |
1284 | ;sys_window_start_moving_handler: ;///////////////////////////////////////////// |
1375 | ;sys_window_start_moving_handler: |
1285 | ;------------------------------------------------------------------------------ |
1376 | ;------------------------------------------------------------------------------ |
1286 | ;? |
1377 | ;? |
1287 | ;------------------------------------------------------------------------------ |
1378 | ;------------------------------------------------------------------------------ |
1288 | ;> eax = old (original) window box |
1379 | ;> eax = old (original) window box |
1289 | ;> esi = process slot |
1380 | ;> esi = process slot |
1290 | ;------------------------------------------------------------------------------ |
1381 | ;------------------------------------------------------------------------------ |
1291 | ; mov edi, eax |
1382 | ; mov edi, eax |
1292 | ; call window._.draw_negative_box |
1383 | ; call window._.draw_negative_box |
1293 | ; ret |
1384 | ; ret |
1294 | ;------------------------------------------------------------------------------ |
1385 | ;------------------------------------------------------------------------------ |
- | 1386 | ||
- | 1387 | ||
1295 | align 4 |
1388 | align 4 |
1296 | ;------------------------------------------------------------------------------ |
- | |
1297 | sys_window_end_moving_handler: ;/////////////////////////////////////////////// |
- | |
1298 | ;------------------------------------------------------------------------------ |
- | |
1299 | ;? |
- | |
1300 | ;------------------------------------------------------------------------------ |
- | |
1301 | ;> eax = old (original) window box |
1389 | ;> eax = old (original) window box |
1302 | ;> ebx = new (final) window box |
1390 | ;> ebx = new (final) window box |
1303 | ;> esi = process slot |
1391 | ;> esi = process slot |
1304 | ;------------------------------------------------------------------------------ |
1392 | sys_window_end_moving_handler: |
1305 | ; mov edi, ebx |
1393 | ; mov edi, ebx |
1306 | ; call window._.end_moving__box |
1394 | ; call window._.end_moving__box |
Line 1307... | Line 1395... | ||
1307 | 1395 | ||
1308 | mov edi, esi |
1396 | mov edi, esi |
Line 1321... | Line 1409... | ||
1321 | mov eax, ebx |
1409 | mov eax, ebx |
1322 | mov bl, [edi + WDATA.fl_wstate] |
1410 | mov bl, [edi + WDATA.fl_wstate] |
1323 | call window._.set_window_box |
1411 | call window._.set_window_box |
1324 | ret |
1412 | ret |
1325 | ;------------------------------------------------------------------------------ |
1413 | ;------------------------------------------------------------------------------ |
- | 1414 | ||
- | 1415 | ||
1326 | align 4 |
1416 | align 4 |
1327 | ;------------------------------------------------------------------------------ |
- | |
1328 | sys_window_moving_handler: ;/////////////////////////////////////////////////// |
- | |
1329 | ;------------------------------------------------------------------------------ |
- | |
1330 | ;? |
- | |
1331 | ;------------------------------------------------------------------------------ |
- | |
1332 | ;> eax = old (from previous call) window box |
1417 | ;> eax = old (from previous call) window box |
1333 | ;> ebx = new (current) window box |
1418 | ;> ebx = new (current) window box |
1334 | ;> esi = process_slot |
1419 | ;> esi = process_slot |
1335 | ;------------------------------------------------------------------------------ |
1420 | sys_window_moving_handler: |
1336 | mov edi, eax |
1421 | mov edi, eax |
1337 | call window._.draw_negative_box |
1422 | call window._.draw_negative_box |
1338 | mov edi, ebx |
1423 | mov edi, ebx |
1339 | call window._.draw_negative_box |
1424 | call window._.draw_negative_box |
1340 | ret |
1425 | ret |
- | 1426 | ||
- | 1427 | ||
- | 1428 | ||
- | 1429 | ||
1341 | ;============================================================================== |
1430 | ;============================================================================== |
1342 | ;///// private functions ////////////////////////////////////////////////////// |
1431 | ; private functions |
1343 | ;============================================================================== |
1432 | ;============================================================================== |
Line 1344... | Line 1433... | ||
1344 | 1433 | ||
1345 | iglobal |
1434 | iglobal |
1346 | align 4 |
1435 | align 4 |
Line 1351... | Line 1440... | ||
1351 | 5, ?, \ ;type 3 {set by skin} |
1440 | 5, ?, \ ;type 3 {set by skin} |
1352 | 5, ? ;type 4 {set by skin} |
1441 | 5, ? ;type 4 {set by skin} |
1353 | endg |
1442 | endg |
Line 1354... | Line 1443... | ||
1354 | 1443 | ||
- | 1444 | ;------------------------------------------------------------------------------ |
|
- | 1445 | ||
1355 | ;------------------------------------------------------------------------------ |
1446 | |
1356 | align 4 |
- | |
1357 | ;------------------------------------------------------------------------------ |
- | |
1358 | window._.invalidate_screen: ;////////////////////////////////////////////////// |
- | |
1359 | ;------------------------------------------------------------------------------ |
- | |
1360 | ;? |
- | |
1361 | ;------------------------------------------------------------------------------ |
1447 | align 4 |
1362 | ;> eax = old (original) window box |
1448 | ;> eax = old (original) window box |
1363 | ;> ebx = new (final) window box |
1449 | ;> ebx = new (final) window box |
1364 | ;> edi = pointer to WDATA struct |
1450 | ;> edi = pointer to WDATA struct |
1365 | ;------------------------------------------------------------------------------ |
1451 | window._.invalidate_screen: |
Line 1366... | Line 1452... | ||
1366 | push eax ebx |
1452 | push eax ebx |
1367 | 1453 | ||
Line 1403... | Line 1489... | ||
1403 | mov [edi + WDATA.fl_redraw], 1 |
1489 | mov [edi + WDATA.fl_redraw], 1 |
Line 1404... | Line 1490... | ||
1404 | 1490 | ||
1405 | pop ebx eax |
1491 | pop ebx eax |
1406 | ret |
1492 | ret |
- | 1493 | ;------------------------------------------------------------------------------ |
|
- | 1494 | ||
1407 | ;------------------------------------------------------------------------------ |
1495 | |
1408 | align 4 |
- | |
1409 | ;------------------------------------------------------------------------------ |
- | |
1410 | window._.set_window_box: ;///////////////////////////////////////////////////// |
- | |
1411 | ;------------------------------------------------------------------------------ |
- | |
1412 | ;? |
- | |
1413 | ;------------------------------------------------------------------------------ |
1496 | align 4 |
1414 | ;> eax = pointer to BOX struct |
1497 | ;> eax = pointer to BOX struct |
1415 | ;> bl = new window state flags |
1498 | ;> bl = new window state flags |
1416 | ;> edi = pointer to WDATA struct |
1499 | ;> edi = pointer to WDATA struct |
1417 | ;------------------------------------------------------------------------------ |
1500 | window._.set_window_box: |
Line 1418... | Line 1501... | ||
1418 | push eax ebx esi |
1501 | push eax ebx esi |
1419 | 1502 | ||
1420 | ; don't do anything if the new box is identical to the old |
1503 | ; don't do anything if the new box is identical to the old |
Line 1484... | Line 1567... | ||
1484 | align 4 |
1567 | align 4 |
1485 | .exit: |
1568 | .exit: |
1486 | pop esi ebx eax |
1569 | pop esi ebx eax |
1487 | ret |
1570 | ret |
1488 | ;------------------------------------------------------------------------------ |
1571 | ;------------------------------------------------------------------------------ |
- | 1572 | ||
- | 1573 | ||
1489 | align 4 |
1574 | align 4 |
1490 | ;------------------------------------------------------------------------------ |
- | |
1491 | window._.set_window_clientbox: ;/////////////////////////////////////////////// |
- | |
1492 | ;------------------------------------------------------------------------------ |
- | |
1493 | ;? |
- | |
1494 | ;------------------------------------------------------------------------------ |
- | |
1495 | ;> edi = pointer to WDATA struct |
1575 | ;> edi = pointer to WDATA struct |
1496 | ;------------------------------------------------------------------------------ |
1576 | window._.set_window_clientbox: |
1497 | push eax ecx edi |
1577 | push eax ecx edi |
Line 1498... | Line 1578... | ||
1498 | 1578 | ||
1499 | mov eax, [_skinh] |
1579 | mov eax, [_skinh] |
1500 | mov [window_topleft + 8 * 3 + 4], eax |
1580 | mov [window_topleft + 8 * 3 + 4], eax |
Line 1542... | Line 1622... | ||
1542 | align 4 |
1622 | align 4 |
1543 | .exit: |
1623 | .exit: |
1544 | pop edi ecx eax |
1624 | pop edi ecx eax |
1545 | ret |
1625 | ret |
1546 | ;------------------------------------------------------------------------------ |
1626 | ;------------------------------------------------------------------------------ |
- | 1627 | ||
- | 1628 | ||
1547 | align 4 |
1629 | align 4 |
1548 | ;------------------------------------------------------------------------------ |
- | |
1549 | window._.sys_set_window: ;///////////////////////////////////////////////////// |
- | |
1550 | ;------------------------------------------------------------------------------ |
- | |
1551 | ;? |
- | |
1552 | ;------------------------------------------------------------------------------ |
- | |
1553 | ;< edx = pointer to WDATA struct |
1630 | ;< edx = pointer to WDATA struct |
1554 | ;------------------------------------------------------------------------------ |
1631 | window._.sys_set_window: |
1555 | mov eax, [current_slot_idx] |
1632 | mov eax, [current_slot_idx] |
1556 | shl eax, 5 |
1633 | shl eax, 5 |
1557 | add eax, window_data |
1634 | add eax, window_data |
1558 | ; save window colors |
1635 | ; save window colors |
1559 | mov [eax + WDATA.cl_workarea], edx |
1636 | mov [eax + WDATA.cl_workarea], edx |
Line 1635... | Line 1712... | ||
1635 | ; reset window redraw flag and exit |
1712 | ; reset window redraw flag and exit |
1636 | mov [edi + WDATA.fl_redraw], 0 |
1713 | mov [edi + WDATA.fl_redraw], 0 |
1637 | mov edx, edi |
1714 | mov edx, edi |
1638 | ret |
1715 | ret |
1639 | ;------------------------------------------------------------------------------ |
1716 | ;------------------------------------------------------------------------------ |
- | 1717 | ||
- | 1718 | ||
1640 | align 4 |
1719 | align 4 |
1641 | ;------------------------------------------------------------------------------ |
- | |
1642 | window._.check_window_position: ;////////////////////////////////////////////// |
- | |
1643 | ;------------------------------------------------------------------------------ |
- | |
1644 | ;? Check if window is inside screen area |
1720 | ;? Check if window is inside screen area |
1645 | ;------------------------------------------------------------------------------ |
- | |
1646 | ;> edi = pointer to WDATA |
1721 | ;> edi = pointer to WDATA |
1647 | ;------------------------------------------------------------------------------ |
1722 | window._.check_window_position: |
1648 | push eax ebx ecx edx esi |
1723 | push eax ebx ecx edx esi |
Line 1649... | Line 1724... | ||
1649 | 1724 | ||
1650 | mov eax, [edi + WDATA.box.left] |
1725 | mov eax, [edi + WDATA.box.left] |
1651 | mov ebx, [edi + WDATA.box.top] |
1726 | mov ebx, [edi + WDATA.box.top] |
Line 1723... | Line 1798... | ||
1723 | sub ebx, edx |
1798 | sub ebx, edx |
1724 | dec ebx |
1799 | dec ebx |
1725 | mov [edi + WDATA.box.top], ebx |
1800 | mov [edi + WDATA.box.top], ebx |
1726 | jmp .exit |
1801 | jmp .exit |
1727 | ;------------------------------------------------------------------------------ |
1802 | ;------------------------------------------------------------------------------ |
- | 1803 | ||
- | 1804 | ||
1728 | align 4 |
1805 | align 4 |
1729 | ;------------------------------------------------------------------------------ |
- | |
1730 | window._.get_titlebar_height: ;//////////////////////////////////////////////// |
- | |
1731 | ;------------------------------------------------------------------------------ |
- | |
1732 | ;? |
- | |
1733 | ;------------------------------------------------------------------------------ |
- | |
1734 | ;> edi = pointer to WDATA |
1806 | ;> edi = pointer to WDATA |
1735 | ;------------------------------------------------------------------------------ |
1807 | window._.get_titlebar_height: |
1736 | mov al, [edi + WDATA.fl_wstyle] |
1808 | mov al, [edi + WDATA.fl_wstyle] |
1737 | and al, 0x0f |
1809 | and al, 0x0f |
1738 | cmp al, 0x03 |
1810 | cmp al, 0x03 |
1739 | jne @f |
1811 | jne @f |
1740 | mov eax, [_skinh] |
1812 | mov eax, [_skinh] |
Line 1743... | Line 1815... | ||
1743 | align 4 |
1815 | align 4 |
1744 | @@: |
1816 | @@: |
1745 | mov eax, 21 |
1817 | mov eax, 21 |
1746 | ret |
1818 | ret |
1747 | ;------------------------------------------------------------------------------ |
1819 | ;------------------------------------------------------------------------------ |
- | 1820 | ||
- | 1821 | ||
1748 | align 4 |
1822 | align 4 |
1749 | ;------------------------------------------------------------------------------ |
- | |
1750 | window._.get_rolledup_height: ;//////////////////////////////////////////////// |
- | |
1751 | ;------------------------------------------------------------------------------ |
- | |
1752 | ;? |
- | |
1753 | ;------------------------------------------------------------------------------ |
- | |
1754 | ;> edi = pointer to WDATA |
1823 | ;> edi = pointer to WDATA |
1755 | ;------------------------------------------------------------------------------ |
1824 | window._.get_rolledup_height: |
1756 | mov al, [edi + WDATA.fl_wstyle] |
1825 | mov al, [edi + WDATA.fl_wstyle] |
1757 | and al, 0x0f |
1826 | and al, 0x0f |
1758 | cmp al, 0x03 |
1827 | cmp al, 0x03 |
1759 | jb @f |
1828 | jb @f |
1760 | mov eax, [_skinh] |
1829 | mov eax, [_skinh] |
Line 1771... | Line 1840... | ||
1771 | align 4 |
1840 | align 4 |
1772 | @@: |
1841 | @@: |
1773 | mov eax, 21 + 2 |
1842 | mov eax, 21 + 2 |
1774 | ret |
1843 | ret |
1775 | ;------------------------------------------------------------------------------ |
1844 | ;------------------------------------------------------------------------------ |
- | 1845 | ||
- | 1846 | ||
1776 | align 4 |
1847 | align 4 |
1777 | ;------------------------------------------------------------------------------ |
- | |
1778 | window._.set_screen: ;///////////////////////////////////////////////////////// |
- | |
1779 | ;------------------------------------------------------------------------------ |
- | |
1780 | ;? Reserve window area in screen buffer |
1848 | ;? Reserve window area in screen buffer |
1781 | ;------------------------------------------------------------------------------ |
- | |
1782 | ;> eax = left |
1849 | ;> eax = left |
1783 | ;> ebx = top |
1850 | ;> ebx = top |
1784 | ;> ecx = right |
1851 | ;> ecx = right |
1785 | ;> edx = bottom |
1852 | ;> edx = bottom |
1786 | ;> esi = process number |
1853 | ;> esi = process number |
1787 | ;------------------------------------------------------------------------------ |
1854 | window._.set_screen: |
1788 | virtual at esp |
1855 | virtual at esp |
1789 | ff_x dd ? |
1856 | ff_x dd ? |
1790 | ff_y dd ? |
1857 | ff_y dd ? |
1791 | ff_width dd ? |
1858 | ff_width dd ? |
1792 | ff_xsz dd ? |
1859 | ff_xsz dd ? |
Line 1953... | Line 2020... | ||
1953 | mov edx, 1 |
2020 | mov edx, 1 |
1954 | call read_process_memory |
2021 | call read_process_memory |
1955 | pop esi edx ecx eax |
2022 | pop esi edx ecx eax |
1956 | ret |
2023 | ret |
1957 | ;------------------------------------------------------------------------------ |
2024 | ;------------------------------------------------------------------------------ |
- | 2025 | ||
- | 2026 | ||
1958 | align 4 |
2027 | align 4 |
1959 | ;------------------------------------------------------------------------------ |
- | |
1960 | window._.window_activate: ;//////////////////////////////////////////////////// |
- | |
1961 | ;------------------------------------------------------------------------------ |
- | |
1962 | ;? Activate window |
2028 | ; Activate window |
1963 | ;------------------------------------------------------------------------------ |
- | |
1964 | ;> esi = pointer to WIN_POS+ window data |
2029 | ; esi = pointer to WIN_POS+ window data |
1965 | ;------------------------------------------------------------------------------ |
2030 | window._.window_activate: |
1966 | push eax ebx |
2031 | push eax ebx |
Line 1967... | Line 2032... | ||
1967 | 2032 | ||
1968 | ; if type of current active window is 3 or 4, it must be redrawn |
2033 | ; if type of current active window is 3 or 4, it must be redrawn |
Line 2039... | Line 2104... | ||
2039 | mov word[MOUSE_SCROLL_V], 0 |
2104 | mov word[MOUSE_SCROLL_V], 0 |
Line 2040... | Line 2105... | ||
2040 | 2105 | ||
2041 | pop ebx eax |
2106 | pop ebx eax |
2042 | ret |
2107 | ret |
2043 | ;------------------------------------------------------------------------------ |
- | |
2044 | window._.window_deactivate: ;//////////////////////////////////////////////////// |
- | |
- | 2108 | ;------------------------------------------------------------------------------ |
|
- | 2109 | ||
2045 | ;------------------------------------------------------------------------------ |
2110 | |
2046 | ;? Deactivate window |
- | |
2047 | ;------------------------------------------------------------------------------ |
2111 | ; Deactivate window |
2048 | ;> esi = pointer to WIN_POS+ window data |
2112 | ; esi = pointer to WIN_POS+ window data |
2049 | ;------------------------------------------------------------------------------ |
2113 | window._.window_deactivate: |
2050 | push eax ebx |
2114 | push eax ebx |
2051 | ;-------------------------------------- |
2115 | ;-------------------------------------- |
2052 | align 4 |
2116 | align 4 |
2053 | .move_others_up: |
2117 | .move_others_up: |
Line 2092... | Line 2156... | ||
2092 | mov word[MOUSE_SCROLL_H], 0 |
2156 | mov word[MOUSE_SCROLL_H], 0 |
2093 | mov word[MOUSE_SCROLL_V], 0 |
2157 | mov word[MOUSE_SCROLL_V], 0 |
2094 | pop ebx eax |
2158 | pop ebx eax |
2095 | ret |
2159 | ret |
2096 | ;------------------------------------------------------------------------------ |
2160 | ;------------------------------------------------------------------------------ |
- | 2161 | ||
- | 2162 | ||
2097 | align 4 |
2163 | align 4 |
2098 | ;------------------------------------------------------------------------------ |
- | |
2099 | window._.check_window_draw: ;////////////////////////////////////////////////// |
- | |
2100 | ;------------------------------------------------------------------------------ |
- | |
2101 | ;? Check if window is necessary to draw |
2164 | ; Check if window is necessary to draw |
2102 | ;------------------------------------------------------------------------------ |
- | |
2103 | ;> edi = pointer to WDATA |
2165 | ; edi = pointer to WDATA |
2104 | ;------------------------------------------------------------------------------ |
2166 | window._.check_window_draw: |
2105 | mov cl, [edi + WDATA.fl_wstyle] |
2167 | mov cl, [edi + WDATA.fl_wstyle] |
2106 | and cl, 0x0f |
2168 | and cl, 0x0f |
2107 | cmp cl, 3 |
2169 | cmp cl, 3 |
2108 | je .exit.redraw ; window type 3 |
2170 | je .exit.redraw ; window type 3 |
2109 | cmp cl, 4 |
2171 | cmp cl, 4 |
Line 2166... | Line 2228... | ||
2166 | align 4 |
2228 | align 4 |
2167 | .exit.no_redraw: |
2229 | .exit.no_redraw: |
2168 | pop esi edx ebx eax |
2230 | pop esi edx ebx eax |
2169 | xor ecx, ecx |
2231 | xor ecx, ecx |
2170 | ret |
2232 | ret |
- | 2233 | ||
- | 2234 | ||
2171 | ;------------------------------------------------------------------------------ |
2235 | ;------------------------------------------------------------------------------ |
- | 2236 | ||
- | 2237 | ||
2172 | align 4 |
2238 | align 4 |
2173 | ;------------------------------------------------------------------------------ |
- | |
2174 | window._.draw_window_caption: ;//////////////////////////////////////////////// |
2239 | window._.draw_window_caption: |
2175 | ;------------------------------------------------------------------------------ |
- | |
2176 | ;? |
- | |
2177 | ;------------------------------------------------------------------------------ |
- | |
2178 | xor eax, eax |
2240 | xor eax, eax |
2179 | mov edx, [thread_count] |
2241 | mov edx, [thread_count] |
2180 | movzx edx, word[WIN_POS + edx * 2] |
2242 | movzx edx, word[WIN_POS + edx * 2] |
2181 | cmp edx, [current_slot_idx] |
2243 | cmp edx, [current_slot_idx] |
2182 | jne @f |
2244 | jne @f |
Line 2284... | Line 2346... | ||
2284 | stc |
2346 | stc |
2285 | call dtext._ |
2347 | call dtext._ |
2286 | .exit: |
2348 | .exit: |
2287 | jmp __sys_draw_pointer |
2349 | jmp __sys_draw_pointer |
2288 | ;------------------------------------------------------------------------------ |
2350 | ;------------------------------------------------------------------------------ |
- | 2351 | ||
- | 2352 | ||
2289 | align 4 |
2353 | align 4 |
2290 | ;------------------------------------------------------------------------------ |
- | |
2291 | window._.draw_negative_box: ;////////////////////////////////////////////////// |
- | |
2292 | ;------------------------------------------------------------------------------ |
- | |
2293 | ;? Draw negative box |
2354 | ; Draw negative box |
2294 | ;------------------------------------------------------------------------------ |
- | |
2295 | ;> edi = pointer to BOX struct |
2355 | ; edi = pointer to BOX struct |
2296 | ;------------------------------------------------------------------------------ |
2356 | window._.draw_negative_box: |
2297 | push eax ebx esi |
2357 | push eax ebx esi |
2298 | mov esi, 0x01000000 |
2358 | mov esi, 0x01000000 |
2299 | ;-------------------------------------- |
2359 | ;-------------------------------------- |
2300 | align 4 |
2360 | align 4 |
2301 | .1: |
2361 | .1: |
Line 2319... | Line 2379... | ||
2319 | ;------------------------------------------------------------------------------ |
2379 | ;------------------------------------------------------------------------------ |
2320 | ; push eax ebx esi |
2380 | ; push eax ebx esi |
2321 | ; xor esi, esi |
2381 | ; xor esi, esi |
2322 | ; jmp window._.draw_negative_box.1 |
2382 | ; jmp window._.draw_negative_box.1 |
2323 | ;------------------------------------------------------------------------------ |
2383 | ;------------------------------------------------------------------------------ |
- | 2384 | ||
- | 2385 | ||
2324 | align 4 |
2386 | align 4 |
2325 | ;------------------------------------------------------------------------------ |
- | |
2326 | window._.get_rect: ;///////////////////////////////////////////////////// |
- | |
2327 | ;------------------------------------------------------------------------------ |
- | |
2328 | ;? |
2387 | ; void __fastcall get_window_rect(struct RECT* rc); |
2329 | ;------------------------------------------------------------------------------ |
- | |
2330 | ;> ecx = pointer to RECT |
2388 | ; ecx = pointer to RECT |
2331 | ;------------------------------------------------------------------------------ |
2389 | window._.get_rect: |
2332 | mov eax, [TASK_BASE] |
2390 | mov eax, [TASK_BASE] |
Line 2333... | Line 2391... | ||
2333 | 2391 | ||
2334 | mov edx, [eax-twdw + WDATA.box.left] |
2392 | mov edx, [eax-twdw + WDATA.box.left] |
Line 2342... | Line 2400... | ||
2342 | 2400 | ||
2343 | add edx, [eax-twdw + WDATA.box.height] |
2401 | add edx, [eax-twdw + WDATA.box.height] |
2344 | mov [ecx+RECT.bottom], edx |
2402 | mov [ecx+RECT.bottom], edx |
2345 | ret |
2403 | ret |
- | 2404 | ;------------------------------------------------------------------------------ |
|
- | 2405 | ||
2346 | ;------------------------------------------------------------------------------ |
2406 | |
2347 | align 4 |
- | |
2348 | ;------------------------------------------------------------------------------ |
- | |
2349 | window._.redraw_top_wnd: ;//////////////////////////////////////////////////////// |
- | |
2350 | ;------------------------------------------------------------------------------ |
2407 | align 4 |
2351 | ;? redraw all windows one above the window |
- | |
2352 | ;------------------------------------------------------------------------------ |
2408 | ; redraw all windows one above the window |
2353 | ;> eax = left |
2409 | ;> eax = left |
2354 | ;> ebx = top |
2410 | ;> ebx = top |
2355 | ;> ecx = right |
2411 | ;> ecx = right |
2356 | ;> edx = bottom |
2412 | ;> edx = bottom |
2357 | ;> esi = process number |
2413 | ;> esi = process number |
2358 | ;! corrupted edi |
2414 | ;! corrupted edi |
2359 | ;------------------------------------------------------------------------------ |
2415 | window._.redraw_top_wnd: |
2360 | push 0 |
2416 | push 0 |
- | 2417 | jmp window._.set_top_wnd.go |
|
- | 2418 | ;------------------------------------------------------------------------------ |
|
Line 2361... | Line 2419... | ||
2361 | jmp window._.set_top_wnd.go |
2419 | |
2362 | - | ||
2363 | align 4 |
- | |
2364 | ;------------------------------------------------------------------------------ |
- | |
2365 | window._.set_top_wnd: ;//////////////////////////////////////////////////////// |
2420 | |
2366 | ;------------------------------------------------------------------------------ |
- | |
2367 | ;? call set_screen for all windows one above the window |
2421 | align 4 |
2368 | ;------------------------------------------------------------------------------ |
2422 | ; call set_screen for all windows one above the window |
2369 | ;> eax = left |
2423 | ;> eax = left |
2370 | ;> ebx = top |
2424 | ;> ebx = top |
2371 | ;> ecx = right |
2425 | ;> ecx = right |
2372 | ;> edx = bottom |
2426 | ;> edx = bottom |
2373 | ;> esi = process number |
2427 | ;> esi = process number |
2374 | ;! corrupted edi |
- | |
2375 | ;------------------------------------------------------------------------------ |
2428 | ;! corrupted edi |
2376 | 2429 | window._.set_top_wnd: |
|
2377 | push 1 |
2430 | push 1 |
2378 | .go: |
2431 | .go: |
2379 | push esi |
2432 | push esi |