Subversion Repositories Kolibri OS

Rev

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