Rev 2015 | Rev 2465 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2015 | Rev 2434 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2010. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2010. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 2015 $ |
8 | $Revision: 2434 $ |
Line 9... | Line 9... | ||
9 | 9 | ||
10 | include 'mousepointer.inc' |
10 | include 'mousepointer.inc' |
Line 70... | Line 70... | ||
70 | 70 | ||
71 | and [mouse.state.buttons], 0 |
71 | and [mouse.state.buttons], 0 |
Line 72... | Line 72... | ||
72 | jmp .exit |
72 | jmp .exit |
- | 73 | ||
73 | 74 | ; is there any system button under cursor? |
|
74 | ; is there any system button under cursor? |
75 | @@: |
75 | @@: call mouse._.find_sys_button_under_cursor |
76 | call mouse._.find_sys_button_under_cursor |
Line 76... | Line 77... | ||
76 | or eax, eax |
77 | or eax, eax |
77 | jz .check_buttons_released |
78 | jz .check_buttons_released |
Line 117... | Line 118... | ||
117 | test byte[esp], mouse.LEFT_BUTTON_FLAG |
118 | test byte[esp], mouse.LEFT_BUTTON_FLAG |
118 | jz @f |
119 | jz @f |
119 | mov eax, [esp + 4] |
120 | mov eax, [esp + 4] |
120 | call .call_left_button_handler |
121 | call .call_left_button_handler |
Line -... | Line 122... | ||
- | 122 | ||
121 | 123 | @@: |
|
122 | @@: test byte[esp], mouse.RIGHT_BUTTON_FLAG |
124 | test byte[esp], mouse.RIGHT_BUTTON_FLAG |
123 | jz @f |
125 | jz @f |
124 | mov eax, [esp + 4] |
126 | mov eax, [esp + 4] |
Line -... | Line 127... | ||
- | 127 | call .call_right_button_handler |
|
125 | call .call_right_button_handler |
128 | |
126 | 129 | @@: |
|
127 | @@: test byte[esp], mouse.MIDDLE_BUTTON_FLAG |
130 | test byte[esp], mouse.MIDDLE_BUTTON_FLAG |
128 | jz .check_position |
131 | jz .check_position |
Line 129... | Line 132... | ||
129 | mov eax, [esp + 4] |
132 | mov eax, [esp + 4] |
Line 220... | Line 223... | ||
220 | 223 | ||
221 | mov [mouse.active_sys_window.last_ticks], 0 |
224 | mov [mouse.active_sys_window.last_ticks], 0 |
222 | call sys_window_maximize_handler |
225 | call sys_window_maximize_handler |
Line -... | Line 226... | ||
- | 226 | jmp .exit |
|
223 | jmp .exit |
227 | |
224 | 228 | @@: |
|
225 | @@: test [edi + WDATA.fl_wstate], WSTATE_MAXIMIZED |
229 | test [edi + WDATA.fl_wstate], WSTATE_MAXIMIZED |
226 | jnz .exit |
230 | jnz .exit |
227 | mov [mouse.active_sys_window.pslot], esi |
231 | mov [mouse.active_sys_window.pslot], esi |
228 | lea eax, [edi + WDATA.box] |
232 | lea eax, [edi + WDATA.box] |
229 | mov ebx, mouse.active_sys_window.old_box |
233 | mov ebx, mouse.active_sys_window.old_box |
230 | mov ecx, BOX.sizeof |
234 | mov ecx, sizeof.BOX |
231 | call memmove |
235 | call memmove |
232 | mov ebx, mouse.active_sys_window.new_box |
236 | mov ebx, mouse.active_sys_window.new_box |
233 | call memmove |
237 | call memmove |
Line 234... | Line 238... | ||
234 | test edx, mouse.WINDOW_MOVE_FLAG |
238 | test edx, mouse.WINDOW_MOVE_FLAG |
235 | jz @f |
239 | jz @f |
236 | 240 | ||
Line -... | Line 241... | ||
- | 241 | call .calculate_n_delta |
|
237 | call .calculate_n_delta |
242 | call .calculate_w_delta |
238 | call .calculate_w_delta |
243 | jmp .call_window_handler |
239 | jmp .call_window_handler |
244 | |
Line -... | Line 245... | ||
- | 245 | @@: |
|
240 | 246 | test dl, mouse.WINDOW_RESIZE_W_FLAG |
|
241 | @@: test dl, mouse.WINDOW_RESIZE_W_FLAG |
247 | jz @f |
242 | jz @f |
248 | call .calculate_w_delta |
Line -... | Line 249... | ||
- | 249 | ||
243 | call .calculate_w_delta |
250 | @@: |
244 | 251 | test dl, mouse.WINDOW_RESIZE_S_FLAG |
|
245 | @@: test dl, mouse.WINDOW_RESIZE_S_FLAG |
252 | jz @f |
Line 246... | Line 253... | ||
246 | jz @f |
253 | call .calculate_s_delta |
247 | call .calculate_s_delta |
254 | |
Line 296... | Line 303... | ||
296 | 303 | ||
297 | mov eax, esi |
304 | mov eax, esi |
298 | shl eax, 5 |
305 | shl eax, 5 |
299 | add eax, window_data + WDATA.box |
306 | add eax, window_data + WDATA.box |
300 | mov ebx, mouse.active_sys_window.old_box |
307 | mov ebx, mouse.active_sys_window.old_box |
301 | mov ecx, BOX.sizeof |
308 | mov ecx, sizeof.BOX |
Line 302... | Line 309... | ||
302 | call memmove |
309 | call memmove |
303 | 310 | ||
304 | mov eax, mouse.active_sys_window.old_box |
311 | mov eax, mouse.active_sys_window.old_box |
Line 368... | Line 375... | ||
368 | or esi, esi |
375 | or esi, esi |
369 | jz .exit |
376 | jz .exit |
Line 370... | Line 377... | ||
370 | 377 | ||
371 | mov eax, mouse.active_sys_window.new_box |
378 | mov eax, mouse.active_sys_window.new_box |
372 | mov ebx, mouse.active_sys_window.old_box |
379 | mov ebx, mouse.active_sys_window.old_box |
373 | mov ecx, BOX.sizeof |
380 | mov ecx, sizeof.BOX |
Line 374... | Line 381... | ||
374 | call memmove |
381 | call memmove |
375 | 382 | ||
376 | mov dl, [mouse.active_sys_window.action] |
383 | mov dl, [mouse.active_sys_window.action] |
Line 387... | Line 394... | ||
387 | mov eax, [mouse.active_sys_window.new_box.left] |
394 | mov eax, [mouse.active_sys_window.new_box.left] |
388 | or eax, eax |
395 | or eax, eax |
389 | jge @f |
396 | jge @f |
390 | xor eax, eax |
397 | xor eax, eax |
391 | mov [mouse.active_sys_window.new_box.left], eax |
398 | mov [mouse.active_sys_window.new_box.left], eax |
- | 399 | @@: |
|
392 | @@: add eax, [mouse.active_sys_window.new_box.width] |
400 | add eax, [mouse.active_sys_window.new_box.width] |
393 | cmp eax, [Screen_Max_X] |
401 | cmp eax, [Screen_Max_X] |
394 | jl @f |
402 | jl @f |
395 | sub eax, [Screen_Max_X] |
403 | sub eax, [Screen_Max_X] |
396 | sub [mouse.active_sys_window.new_box.left], eax |
404 | sub [mouse.active_sys_window.new_box.left], eax |
- | 405 | @@: |
|
397 | @@: mov eax, [mouse.active_sys_window.new_box.top] |
406 | mov eax, [mouse.active_sys_window.new_box.top] |
398 | or eax, eax |
407 | or eax, eax |
399 | jge @f |
408 | jge @f |
400 | xor eax, eax |
409 | xor eax, eax |
401 | mov [mouse.active_sys_window.new_box.top], eax |
410 | mov [mouse.active_sys_window.new_box.top], eax |
- | 411 | @@: |
|
402 | @@: add eax, [mouse.active_sys_window.new_box.height] |
412 | add eax, [mouse.active_sys_window.new_box.height] |
403 | cmp eax, [Screen_Max_Y] |
413 | cmp eax, [Screen_Max_Y] |
404 | jle .call_window_handler |
414 | jle .call_window_handler |
405 | sub eax, [Screen_Max_Y] |
415 | sub eax, [Screen_Max_Y] |
406 | sub [mouse.active_sys_window.new_box.top], eax |
416 | sub [mouse.active_sys_window.new_box.top], eax |
407 | jmp .call_window_handler |
417 | jmp .call_window_handler |
Line 419... | Line 429... | ||
419 | mov eax, [mouse.active_sys_window.new_box.width] |
429 | mov eax, [mouse.active_sys_window.new_box.width] |
420 | sub eax, 127 |
430 | sub eax, 127 |
421 | jge @f |
431 | jge @f |
422 | add [mouse.active_sys_window.new_box.left], eax |
432 | add [mouse.active_sys_window.new_box.left], eax |
423 | mov [mouse.active_sys_window.new_box.width], 127 |
433 | mov [mouse.active_sys_window.new_box.width], 127 |
- | 434 | @@: |
|
424 | @@: mov eax, [mouse.active_sys_window.new_box.left] |
435 | mov eax, [mouse.active_sys_window.new_box.left] |
425 | or eax, eax |
436 | or eax, eax |
426 | jge .check_resize_s |
437 | jge .check_resize_s |
427 | add [mouse.active_sys_window.new_box.width], eax |
438 | add [mouse.active_sys_window.new_box.width], eax |
428 | xor eax, eax |
439 | xor eax, eax |
429 | mov [mouse.active_sys_window.new_box.left], eax |
440 | mov [mouse.active_sys_window.new_box.left], eax |
Line 447... | Line 458... | ||
447 | mov eax, [mouse.active_sys_window.new_box.height] |
458 | mov eax, [mouse.active_sys_window.new_box.height] |
448 | cmp eax, ecx |
459 | cmp eax, ecx |
449 | jge @f |
460 | jge @f |
450 | mov eax, ecx |
461 | mov eax, ecx |
451 | mov [mouse.active_sys_window.new_box.height], eax |
462 | mov [mouse.active_sys_window.new_box.height], eax |
- | 463 | @@: |
|
452 | @@: add eax, [mouse.active_sys_window.new_box.top] |
464 | add eax, [mouse.active_sys_window.new_box.top] |
453 | cmp eax, [Screen_Max_Y] |
465 | cmp eax, [Screen_Max_Y] |
454 | jle .check_resize_e |
466 | jle .check_resize_e |
455 | sub eax, [Screen_Max_Y] |
467 | sub eax, [Screen_Max_Y] |
456 | neg eax |
468 | neg eax |
457 | add [mouse.active_sys_window.new_box.height], eax |
469 | add [mouse.active_sys_window.new_box.height], eax |
Line 472... | Line 484... | ||
472 | mov eax, [mouse.active_sys_window.new_box.width] |
484 | mov eax, [mouse.active_sys_window.new_box.width] |
473 | cmp eax, 127 |
485 | cmp eax, 127 |
474 | jge @f |
486 | jge @f |
475 | mov eax, 127 |
487 | mov eax, 127 |
476 | mov [mouse.active_sys_window.new_box.width], eax |
488 | mov [mouse.active_sys_window.new_box.width], eax |
- | 489 | @@: |
|
477 | @@: add eax, [mouse.active_sys_window.new_box.left] |
490 | add eax, [mouse.active_sys_window.new_box.left] |
478 | cmp eax, [Screen_Max_X] |
491 | cmp eax, [Screen_Max_X] |
479 | jle .call_window_handler |
492 | jle .call_window_handler |
480 | sub eax, [Screen_Max_X] |
493 | sub eax, [Screen_Max_X] |
481 | neg eax |
494 | neg eax |
482 | add [mouse.active_sys_window.new_box.width], eax |
495 | add [mouse.active_sys_window.new_box.width], eax |
Line 490... | Line 503... | ||
490 | mov ebx, mouse.active_sys_window.new_box |
503 | mov ebx, mouse.active_sys_window.new_box |
Line 491... | Line 504... | ||
491 | 504 | ||
492 | push esi |
505 | push esi |
493 | mov esi, mouse.active_sys_window.old_box |
506 | mov esi, mouse.active_sys_window.old_box |
494 | mov edi, mouse.active_sys_window.new_box |
507 | mov edi, mouse.active_sys_window.new_box |
495 | mov ecx, BOX.sizeof / 4 |
508 | mov ecx, sizeof.BOX / 4 |
496 | repe |
509 | repe |
497 | cmpsd |
510 | cmpsd |
498 | pop esi |
511 | pop esi |
Line 553... | Line 566... | ||
553 | mov edx, esi |
566 | mov edx, esi |
Line 554... | Line 567... | ||
554 | 567 | ||
555 | ; check if any process button contains cursor |
568 | ; check if any process button contains cursor |
556 | mov eax, [BTN_ADDR] |
569 | mov eax, [BTN_ADDR] |
557 | mov ecx, [eax] |
570 | mov ecx, [eax] |
558 | imul esi, ecx, SYS_BUTTON.sizeof |
571 | imul esi, ecx, sizeof.SYS_BUTTON |
559 | add esi, eax |
572 | add esi, eax |
560 | inc ecx |
573 | inc ecx |
Line 561... | Line 574... | ||
561 | add esi, SYS_BUTTON.sizeof |
574 | add esi, sizeof.SYS_BUTTON |
562 | 575 | ||
563 | .next_button: |
576 | .next_button: |
Line 564... | Line 577... | ||
564 | dec ecx |
577 | dec ecx |
Line 565... | Line 578... | ||
565 | jz .not_found |
578 | jz .not_found |
566 | 579 | ||
567 | add esi, -SYS_BUTTON.sizeof |
580 | add esi, -sizeof.SYS_BUTTON |