Rev 45 | Rev 52 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 45 | Rev 49 | ||
---|---|---|---|
Line 343... | Line 343... | ||
343 | no_skin_height: |
343 | no_skin_height: |
Line 344... | Line 344... | ||
344 | 344 | ||
345 | cmp eax,5 ; get screen workarea |
345 | cmp eax,5 ; get screen workarea |
346 | jne no_get_workarea |
346 | jne no_get_workarea |
347 | popad |
- | |
348 | - | ||
349 | mov eax,[0xfe00] |
- | |
350 | mov [screen_workarea.right],eax |
- | |
351 | mov eax,[0xfe04] |
- | |
352 | mov [screen_workarea.bottom],eax |
- | |
353 | 347 | popad |
|
354 | mov eax,[screen_workarea.left-2] |
348 | mov eax,[screen_workarea.left-2] |
355 | mov ax,word[screen_workarea.right] |
349 | mov ax,word[screen_workarea.right] |
356 | mov [esp+36],eax |
350 | mov [esp+36],eax |
357 | mov eax,[screen_workarea.top-2] |
351 | mov eax,[screen_workarea.top-2] |
Line 360... | Line 354... | ||
360 | ret |
354 | ret |
361 | no_get_workarea: |
355 | no_get_workarea: |
Line 362... | Line 356... | ||
362 | 356 | ||
363 | cmp eax,6 ; set screen workarea |
357 | cmp eax,6 ; set screen workarea |
364 | jne no_set_workarea |
358 | jne no_set_workarea |
365 | movzx eax,word[esp+16+2] |
359 | movsx eax,word[esp+16+2] |
366 | movzx ebx,word[esp+16] |
- | |
367 | cmp eax,[0xFE00] |
- | |
368 | jae .exit |
- | |
369 | cmp ebx,[0xFE00] |
- | |
370 | ja .exit |
360 | movsx ebx,word[esp+16] |
371 | cmp eax,ebx |
361 | cmp eax,ebx |
- | 362 | jge .lp1 |
|
- | 363 | or eax,eax;[0xFE00] |
|
372 | jae .exit |
364 | jl @f |
- | 365 | mov [screen_workarea.left],eax |
|
- | 366 | @@: cmp ebx,[0xFE00] |
|
373 | mov [screen_workarea.left],eax |
367 | jg .lp1 |
374 | mov [screen_workarea.right],ebx |
368 | mov [screen_workarea.right],ebx |
375 | movzx eax,word[esp+24+2] |
369 | .lp1: movsx eax,word[esp+24+2] |
376 | movzx ebx,word[esp+24] |
- | |
377 | cmp eax,[0xFE04] |
- | |
378 | jae .exit |
- | |
379 | cmp ebx,[0xFE04] |
- | |
380 | ja .exit |
370 | movsx ebx,word[esp+24] |
381 | cmp eax,ebx |
371 | cmp eax,ebx |
- | 372 | jge .lp2 |
|
- | 373 | or eax,eax;[0xFE04] |
|
382 | jae .exit |
374 | jl @f |
- | 375 | mov [screen_workarea.top],eax |
|
- | 376 | @@: cmp ebx,[0xFE04] |
|
383 | mov [screen_workarea.top],eax |
377 | jg .lp2 |
- | 378 | mov [screen_workarea.bottom],ebx |
|
- | 379 | .lp2: call repos_windows |
|
- | 380 | call calculatescreen |
|
- | 381 | ; jmp redraw_screen_direct |
|
- | 382 | .exit: |
|
- | 383 | popad |
|
- | 384 | ret |
|
- | 385 | no_set_workarea: |
|
- | 386 | ||
- | 387 | popad |
|
Line -... | Line 388... | ||
- | 388 | ret |
|
- | 389 | ||
384 | mov [screen_workarea.bottom],ebx |
390 | |
385 | 391 | repos_windows: |
|
- | 392 | mov ecx,[0x3004] |
|
386 | mov ecx,[0x3004] |
393 | mov esi,0x20*2 |
- | 394 | mov byte[0x0000fff0],1 |
|
- | 395 | dec ecx |
|
- | 396 | jge @f |
|
387 | mov esi,0x20*2 |
397 | ret |
388 | dec ecx |
398 | @@: mov [esi+WDATA.fl_redraw],1 |
389 | @@: test [esi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
399 | test [esi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
390 | jz .lp1 |
400 | jz .lp2 |
391 | mov eax,[screen_workarea.left] |
401 | mov eax,[screen_workarea.left] |
392 | mov [esi+WDATA.left],eax |
402 | mov [esi+WDATA.left],eax |
393 | sub eax,[screen_workarea.right] |
403 | sub eax,[screen_workarea.right] |
Line 400... | Line 410... | ||
400 | sub eax,[screen_workarea.bottom] |
410 | sub eax,[screen_workarea.bottom] |
401 | neg eax |
411 | neg eax |
402 | mov [esi+WDATA.height],eax |
412 | mov [esi+WDATA.height],eax |
403 | .lp1: add esi,0x20 |
413 | .lp1: add esi,0x20 |
404 | loop @b |
414 | loop @b |
405 | call calculatescreen |
- | |
406 | jmp redraw_screen_direct |
- | |
407 | .exit: |
- | |
408 | popad |
- | |
409 | ret |
415 | ret |
- | 416 | .lp2: mov eax,[esi+WDATA.left] |
|
- | 417 | add eax,[esi+WDATA.width] |
|
410 | no_set_workarea: |
418 | mov ebx,[0x0000fe00] |
- | 419 | ; inc ebx |
|
- | 420 | cmp eax,ebx |
|
- | 421 | jle .lp4 |
|
- | 422 | mov eax,[esi+WDATA.width] |
|
- | 423 | sub eax,ebx |
|
- | 424 | jle .lp3 |
|
- | 425 | mov [esi+WDATA.width],ebx |
|
- | 426 | .lp3: sub ebx,[esi+WDATA.width] |
|
- | 427 | mov [esi+WDATA.left],ebx |
|
- | 428 | .lp4: mov eax,[esi+WDATA.top] |
|
- | 429 | add eax,[esi+WDATA.height] |
|
- | 430 | mov ebx,[0x0000fe04] |
|
- | 431 | ; inc ebx |
|
- | 432 | cmp eax,ebx |
|
- | 433 | jle .lp6 |
|
- | 434 | mov eax,[esi+WDATA.height] |
|
- | 435 | sub eax,ebx |
|
411 | 436 | jle .lp5 |
|
- | 437 | mov [esi+WDATA.height],ebx |
|
- | 438 | .lp5: sub ebx,[esi+WDATA.height] |
|
- | 439 | mov [esi+WDATA.top],ebx |
|
- | 440 | .lp6: add esi,0x20 |
|
412 | popad |
441 | loop @b |
413 | ret |
442 | ret |
Line 414... | Line 443... | ||
414 | 443 | ||
415 | uglobal |
444 | uglobal |
416 | common_colours: |
445 | common_colours: |
417 | times 128 db 0x0 |
446 | times 128 db 0x0 |
Line 418... | Line -... | ||
418 | endg |
- | |
419 | - | ||
420 | check_window_move_request: |
- | |
421 | - | ||
422 | pushad |
- | |
423 | - | ||
424 | mov edi,[window_move_pr] ; requestor process base |
- | |
425 | - | ||
426 | cmp edi,0 |
- | |
427 | je window_move_return |
- | |
428 | - | ||
429 | shl edi,5 |
- | |
430 | add edi,window_data |
- | |
431 | - | ||
432 | test [edi+WDATA.fl_wstate],WSTATE_MAXIMIZED |
- | |
433 | jnz window_move_return |
- | |
434 | - | ||
435 | push dword [edi+0] ; save old coordinates |
- | |
436 | push dword [edi+4] |
- | |
437 | push dword [edi+8] |
- | |
438 | push dword [edi+12] |
- | |
439 | - | ||
440 | mov eax,[window_move_eax] |
- | |
441 | mov ebx,[window_move_ebx] |
- | |
442 | mov ecx,[window_move_ecx] |
- | |
443 | mov edx,[window_move_edx] |
- | |
444 | - | ||
445 | cmp eax,-1 ; set new position and size |
- | |
446 | je no_x_reposition |
- | |
447 | mov [edi+0],eax |
- | |
448 | no_x_reposition: |
- | |
449 | cmp ebx,-1 |
- | |
450 | je no_y_reposition |
- | |
451 | mov [edi+4],ebx |
- | |
452 | no_y_reposition: |
- | |
453 | - | ||
454 | test [edi+WDATA.fl_wstate],WSTATE_ROLLEDUP |
- | |
455 | jnz no_y_resizing |
- | |
456 | - | ||
457 | cmp ecx,-1 |
- | |
458 | je no_x_resizing |
- | |
459 | mov [edi+8],ecx |
- | |
460 | no_x_resizing: |
- | |
461 | cmp edx,-1 |
- | |
462 | je no_y_resizing |
- | |
463 | mov [edi+12],edx |
- | |
464 | no_y_resizing: |
- | |
465 | - | ||
466 | call check_window_position |
- | |
467 | - | ||
468 | pushad ; save for window fullscreen/resize |
- | |
469 | mov esi,edi |
- | |
470 | sub edi,window_data |
- | |
471 | shr edi,5 |
- | |
472 | shl edi,8 |
- | |
473 | add edi,0x80000+0x90 |
- | |
474 | mov ecx,4 |
- | |
475 | cld |
- | |
476 | rep movsd |
- | |
477 | popad |
- | |
478 | - | ||
479 | pushad ; calculcate screen at new position |
- | |
480 | mov eax,[edi+00] |
- | |
481 | mov ebx,[edi+04] |
- | |
482 | mov ecx,[edi+8] |
- | |
483 | mov edx,[edi+12] |
- | |
484 | add ecx,eax |
- | |
485 | add edx,ebx |
- | |
486 | call calculatescreen |
- | |
487 | popad |
- | |
488 | - | ||
489 | pop edx ; calculcate screen at old position |
- | |
490 | pop ecx |
- | |
491 | pop ebx |
- | |
492 | pop eax |
- | |
493 | add ecx,eax |
- | |
494 | add edx,ebx |
- | |
495 | mov [dlx],eax ; save for drawlimits |
- | |
496 | mov [dly],ebx |
- | |
497 | mov [dlxe],ecx |
- | |
498 | mov [dlye],edx |
- | |
499 | call calculatescreen |
- | |
500 | - | ||
501 | mov [edi+31],byte 1 ; flag the process as redraw |
- | |
502 | - | ||
503 | mov eax,edi ; redraw screen at old position |
- | |
504 | xor esi,esi |
- | |
505 | call redrawscreen |
- | |
506 | - | ||
507 | mov [0xfff5],byte 0 ; mouse pointer |
- | |
508 | mov [0xfff4],byte 0 ; no mouse under |
- | |
509 | mov [0xfb44],byte 0 ; react to mouse up/down |
- | |
510 | - | ||
511 | mov ecx,10 ; wait 1/10 second |
- | |
512 | wmrl3: |
- | |
513 | call [draw_pointer] |
- | |
514 | mov eax,1 |
- | |
515 | call delay_hs |
- | |
516 | loop wmrl3 |
- | |
517 | - | ||
518 | mov [window_move_pr],0 |
- | |
519 | - | ||
520 | window_move_return: |
- | |
521 | - | ||
522 | popad |
- | |
523 | - | ||
Line 524... | Line 447... | ||
524 | ret |
447 | endg |