Subversion Repositories Kolibri OS

Rev

Rev 5350 | Rev 5363 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1362 mikedld 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2455 mario79 3
;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
1362 mikedld 4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
5
;; Distributed under terms of the GNU General Public License    ;;
6
;;                                                              ;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8
 
9
$Revision: 5351 $
10
 
11
;==============================================================================
12
;///// public functions ///////////////////////////////////////////////////////
13
;==============================================================================
14
 
1391 mikedld 15
window.BORDER_SIZE = 5
16
 
17
macro FuncTable name, table_name, [label]
1362 mikedld 18
{
19
  common
20
    align 4
1391 mikedld 21
    \label name#.#table_name dword
1362 mikedld 22
  forward
23
    dd name#.#label
24
  common
1391 mikedld 25
    name#.sizeof.#table_name = $ - name#.#table_name
1362 mikedld 26
}
27
 
28
uglobal
4778 Akyltist 29
  common_colours rd 48
1391 mikedld 30
  draw_limits    RECT
1362 mikedld 31
endg
32
 
33
align 4
34
;------------------------------------------------------------------------------
1391 mikedld 35
syscall_draw_window: ;///// system function 0 /////////////////////////////////
36
;------------------------------------------------------------------------------
4779 Akyltist 37
;? .
1391 mikedld 38
;------------------------------------------------------------------------------
39
        mov     eax, edx
40
        shr     eax, 24
41
        and     al, 0x0f
42
        cmp     al, 5
43
        jae     .exit
44
 
45
        push    eax
46
        call    window._.sys_set_window
47
        pop     eax
48
 
49
        or      al, al
50
        jnz     @f
51
 
52
        ; type I - original style
53
        call    drawwindow_I
54
        jmp     window._.draw_window_caption.2
2436 mario79 55
;--------------------------------------
56
align 4
57
@@:
2288 clevermous 58
        dec     al
1391 mikedld 59
        jnz     @f
60
 
61
        ; type II - only reserve area, no draw
2436 mario79 62
;        call    sys_window_mouse
2453 mario79 63
;        call    [draw_pointer]
64
        call    __sys_draw_pointer
1391 mikedld 65
        jmp     .exit
2436 mario79 66
;--------------------------------------
67
align 4
68
@@:
2288 clevermous 69
        dec     al
1391 mikedld 70
        jnz     @f
71
 
72
        ; type III  - new style
73
        call    drawwindow_III
74
        jmp     window._.draw_window_caption.2
75
 
76
        ; type IV & V - skinned window (resizable & not)
2436 mario79 77
;--------------------------------------
78
align 4
79
@@:
2288 clevermous 80
        mov     eax, [TASK_COUNT]
1391 mikedld 81
        movzx   eax, word[WIN_POS + eax * 2]
82
        cmp     eax, [CURRENT_TASK]
83
        setz    al
84
        movzx   eax, al
85
        push    eax
86
        call    drawwindow_IV
87
        jmp     window._.draw_window_caption.2
2436 mario79 88
;--------------------------------------
89
align 4
90
.exit:
1391 mikedld 91
        ret
2436 mario79 92
;------------------------------------------------------------------------------
1391 mikedld 93
align 4
94
;------------------------------------------------------------------------------
1362 mikedld 95
syscall_display_settings: ;///// system function 48 ///////////////////////////
96
;------------------------------------------------------------------------------
97
;; Redraw screen:
98
;< ebx = 0
99
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
100
;; Set button style:
101
;< ebx = 1
102
;< ecx = 0 (flat) or 1 (with gradient)
103
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
104
;; Set system color palette:
105
;< ebx = 2
106
;< ecx = pointer to color table
107
;< edx = size of color table
108
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
109
;; Get system color palette:
110
;< ebx = 3
111
;< ecx = pointer to color table buffer
112
;< edx = size of color table buffer
113
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
114
;; Get skinned caption height:
115
;< ebx = 4
116
;> eax = height in pixels
117
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
118
;; Get screen working area:
119
;< ebx = 5
120
;> eax = pack[16(left), 16(right)]
121
;> ebx = pack[16(top), 16(bottom)]
122
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123
;; Set screen working area:
124
;< ebx = 6
125
;< ecx = pack[16(left), 16(right)]
126
;< edx = pack[16(top), 16(bottom)]
127
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
128
;; Get skin margins:
129
;< ebx = 7
130
;> eax = pack[16(left), 16(right)]
131
;> ebx = pack[16(top), 16(bottom)]
132
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
133
;; Set skin:
134
;< ebx = 8
135
;< ecx = pointer to FileInfoBlock struct
136
;> eax = FS error code
137
;------------------------------------------------------------------------------
138
        cmp     ebx, .sizeof.ftable / 4
139
        ja      @f
140
        jmp     [.ftable + ebx * 4]
2436 mario79 141
;--------------------------------------
142
align 4
143
@@:
2288 clevermous 144
        ret
2436 mario79 145
;------------------------------------------------------------------------------
1362 mikedld 146
align 4
147
syscall_display_settings.00:
148
        xor     eax, eax
149
        inc     ebx
150
        cmp     [windowtypechanged], ebx
151
        jne     .exit
152
        mov     [windowtypechanged], eax
153
 
154
        jmp     syscall_display_settings._.redraw_whole_screen
2436 mario79 155
;--------------------------------------
156
align 4
157
.exit:
1362 mikedld 158
        ret
2436 mario79 159
;------------------------------------------------------------------------------
1362 mikedld 160
align 4
161
syscall_display_settings.01:
162
        and     ecx, 1
163
        cmp     ecx, [buttontype]
164
        je      .exit
165
        mov     [buttontype], ecx
166
        mov     [windowtypechanged], ebx
2436 mario79 167
;--------------------------------------
168
align 4
1362 mikedld 169
  .exit:
170
        ret
2436 mario79 171
;------------------------------------------------------------------------------
1362 mikedld 172
align 4
173
syscall_display_settings.02:
174
        dec     ebx
175
        mov     esi, ecx
4796 Akyltist 176
        cmp     edx, 192
177
        jnae    @f
178
        mov     edx, 192 ; max size
179
      @@:
1362 mikedld 180
        mov     edi, common_colours
181
        mov     ecx, edx
2288 clevermous 182
        rep movsb
1362 mikedld 183
        mov     [windowtypechanged], ebx
184
        ret
2436 mario79 185
;------------------------------------------------------------------------------
1362 mikedld 186
align 4
187
syscall_display_settings.03:
188
        mov     edi, ecx
4796 Akyltist 189
        cmp     edx, 192
190
        jnae    @f
191
        mov     edx, 192 ; max size
192
      @@:
1362 mikedld 193
        mov     esi, common_colours
194
        mov     ecx, edx
2288 clevermous 195
        rep movsb
1362 mikedld 196
        ret
2436 mario79 197
;------------------------------------------------------------------------------
1362 mikedld 198
align 4
199
syscall_display_settings.04:
200
        mov     eax, [_skinh]
201
        mov     [esp + 32], eax
202
        ret
2436 mario79 203
;------------------------------------------------------------------------------
1362 mikedld 204
align 4
205
syscall_display_settings.05:
206
        mov     eax, [screen_workarea.left - 2]
207
        mov     ax, word[screen_workarea.right]
208
        mov     [esp + 32], eax
209
        mov     eax, [screen_workarea.top - 2]
210
        mov     ax, word[screen_workarea.bottom]
211
        mov     [esp + 20], eax
212
        ret
2436 mario79 213
;------------------------------------------------------------------------------
1362 mikedld 214
align 4
215
syscall_display_settings.06:
216
        xor     esi, esi
217
 
5350 serge 218
        mov     edi, [_display.width]
219
        dec     edi
1362 mikedld 220
        mov     eax, ecx
221
        movsx   ebx, ax
222
        sar     eax, 16
223
        cmp     eax, ebx
224
        jge     .check_horizontal
225
        inc     esi
226
        or      eax, eax
227
        jge     @f
228
        xor     eax, eax
2436 mario79 229
;--------------------------------------
230
align 4
231
@@:
2288 clevermous 232
        mov     [screen_workarea.left], eax
1362 mikedld 233
        cmp     ebx, edi
234
        jle     @f
235
        mov     ebx, edi
2436 mario79 236
;--------------------------------------
237
align 4
238
@@:
2288 clevermous 239
        mov     [screen_workarea.right], ebx
2436 mario79 240
;--------------------------------------
241
align 4
242
.check_horizontal:
5350 serge 243
        mov     edi, [_display.height]
244
        dec     edi
1362 mikedld 245
        mov     eax, edx
246
        movsx   ebx, ax
247
        sar     eax, 16
248
        cmp     eax, ebx
249
        jge     .check_if_redraw_needed
250
        inc     esi
251
        or      eax, eax
252
        jge     @f
253
        xor     eax, eax
2436 mario79 254
;--------------------------------------
255
align 4
256
@@:
2288 clevermous 257
        mov     [screen_workarea.top], eax
1362 mikedld 258
        cmp     ebx, edi
259
        jle     @f
260
        mov     ebx, edi
2436 mario79 261
;--------------------------------------
262
align 4
263
@@:
2288 clevermous 264
        mov     [screen_workarea.bottom], ebx
2436 mario79 265
;--------------------------------------
266
align 4
267
.check_if_redraw_needed:
1362 mikedld 268
        or      esi, esi
269
        jz      .exit
270
 
271
        call    repos_windows
272
        jmp     syscall_display_settings._.calculate_whole_screen
2436 mario79 273
;--------------------------------------
274
align 4
275
.exit:
1362 mikedld 276
        ret
2436 mario79 277
;------------------------------------------------------------------------------
1362 mikedld 278
align 4
279
syscall_display_settings.07:
280
        mov     eax, [_skinmargins + 0]
281
        mov     [esp + 32], eax
282
        mov     eax, [_skinmargins + 4]
283
        mov     [esp + 20], eax
284
        ret
2436 mario79 285
;------------------------------------------------------------------------------
1362 mikedld 286
align 4
287
syscall_display_settings.08:
288
        mov     ebx, ecx
289
        call    read_skin_file
290
        mov     [esp + 32], eax
291
        test    eax, eax
292
        jnz     .exit
293
 
294
        call    syscall_display_settings._.calculate_whole_screen
295
        jmp     syscall_display_settings._.redraw_whole_screen
2436 mario79 296
;--------------------------------------
297
align 4
298
.exit:
1362 mikedld 299
        ret
2436 mario79 300
;------------------------------------------------------------------------------
301
align 4
1362 mikedld 302
syscall_display_settings._.calculate_whole_screen:
303
        xor     eax, eax
304
        xor     ebx, ebx
5350 serge 305
        mov     ecx, [_display.width]
306
        mov     edx, [_display.height]
307
        dec     ecx
308
        dec     edx
1362 mikedld 309
        jmp     calculatescreen
2436 mario79 310
;------------------------------------------------------------------------------
311
align 4
1362 mikedld 312
syscall_display_settings._.redraw_whole_screen:
313
        xor     eax, eax
314
        mov     [draw_limits.left], eax
315
        mov     [draw_limits.top], eax
5350 serge 316
        mov     eax, [_display.width]
317
        dec     eax
1362 mikedld 318
        mov     [draw_limits.right], eax
5350 serge 319
        mov     eax, [_display.height]
320
        dec     eax
1362 mikedld 321
        mov     [draw_limits.bottom], eax
322
        mov     eax, window_data
323
        jmp     redrawscreen
2436 mario79 324
;------------------------------------------------------------------------------
1362 mikedld 325
align 4
326
;------------------------------------------------------------------------------
327
syscall_set_window_shape: ;///// system function 50 ///////////////////////////
328
;------------------------------------------------------------------------------
329
;; Set window shape address:
1369 Lrz 330
;> ebx = 0
331
;> ecx = shape data address
1362 mikedld 332
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
333
;; Set window shape scale:
1369 Lrz 334
;> ebx = 1
335
;> ecx = scale power (resulting scale is 2^ebx)
1362 mikedld 336
;------------------------------------------------------------------------------
337
        mov     edi, [current_slot]
338
 
1369 Lrz 339
        test    ebx, ebx
1362 mikedld 340
        jne     .shape_scale
1369 Lrz 341
        mov     [edi + APPDATA.wnd_shape], ecx
2436 mario79 342
;--------------------------------------
343
align 4
344
.shape_scale:
1369 Lrz 345
        dec     ebx
1362 mikedld 346
        jnz     .exit
1369 Lrz 347
        mov     [edi + APPDATA.wnd_shape_scale], ecx
2436 mario79 348
;--------------------------------------
349
align 4
350
.exit:
1362 mikedld 351
        ret
2436 mario79 352
;------------------------------------------------------------------------------
1362 mikedld 353
align 4
354
;------------------------------------------------------------------------------
1391 mikedld 355
syscall_move_window: ;///// system function 67 ////////////////////////////////
356
;------------------------------------------------------------------------------
357
;? 
358
;------------------------------------------------------------------------------
359
        mov     edi, [CURRENT_TASK]
360
        shl     edi, 5
361
        add     edi, window_data
362
 
1563 diamond 363
        test    [edi + WDATA.fl_wdrawn], 1
364
        jz      .exit
365
 
1391 mikedld 366
        test    [edi + WDATA.fl_wstate], WSTATE_MAXIMIZED
367
        jnz     .exit
368
 
369
        cmp     ebx, -1
370
        jne     @f
371
        mov     ebx, [edi + WDATA.box.left]
2436 mario79 372
;--------------------------------------
373
align 4
374
@@:
2288 clevermous 375
        cmp     ecx, -1
1391 mikedld 376
        jne     @f
377
        mov     ecx, [edi + WDATA.box.top]
2436 mario79 378
;--------------------------------------
379
align 4
380
@@:
2288 clevermous 381
        cmp     edx, -1
1391 mikedld 382
        jne     @f
383
        mov     edx, [edi + WDATA.box.width]
2436 mario79 384
;--------------------------------------
385
align 4
386
@@:
2288 clevermous 387
        cmp     esi, -1
1391 mikedld 388
        jne     @f
389
        mov     esi, [edi + WDATA.box.height]
2436 mario79 390
;--------------------------------------
391
align 4
392
@@:
2288 clevermous 393
        push    esi edx ecx ebx
1391 mikedld 394
        mov     eax, esp
395
        mov     bl, [edi + WDATA.fl_wstate]
3452 mario79 396
;--------------------------------------
397
align 4
398
@@:
399
        cmp     [REDRAW_BACKGROUND], byte 0
400
        jz      @f
401
        call    change_task
402
        jmp     @b
403
;--------------------------------------
404
align 4
405
@@:
1391 mikedld 406
        call    window._.set_window_box
2381 hidnplayr 407
        add     esp, sizeof.BOX
1391 mikedld 408
 
409
        ; NOTE: do we really need this? to be reworked
410
;       mov     byte[DONT_DRAW_MOUSE], 0 ; mouse pointer
411
;       mov     byte[MOUSE_BACKGROUND], 0 ; no mouse under
412
;       mov     byte[MOUSE_DOWN], 0 ; react to mouse up/down
413
 
414
        ; NOTE: do we really need this? to be reworked
415
;       call    [draw_pointer]
2436 mario79 416
;--------------------------------------
417
align 4
418
.exit:
1391 mikedld 419
        ret
2436 mario79 420
;------------------------------------------------------------------------------
1391 mikedld 421
align 4
422
;------------------------------------------------------------------------------
423
syscall_window_settings: ;///// system function 71 /////////////////////////////
424
;------------------------------------------------------------------------------
425
;? 
426
;------------------------------------------------------------------------------
427
        dec     ebx     ; subfunction #1 - set window caption
428
        jnz     .exit_fail
429
 
430
        ; NOTE: only window owner thread can set its caption,
431
        ;       so there's no parameter for PID/TID
432
 
433
        mov     edi, [CURRENT_TASK]
434
        shl     edi, 5
435
 
436
        mov     [edi * 8 + SLOT_BASE + APPDATA.wnd_caption], ecx
437
        or      [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
438
 
439
        call    window._.draw_window_caption
440
 
441
        xor     eax, eax ; eax = 0 (success)
442
        ret
443
 
444
;  .get_window_caption:
445
;        dec     eax     ; subfunction #2 - get window caption
446
;        jnz     .exit_fail
447
 
448
        ; not implemented yet
2436 mario79 449
;--------------------------------------
450
align 4
451
.exit_fail:
1391 mikedld 452
        xor     eax, eax
453
        inc     eax     ; eax = 1 (fail)
454
        ret
2436 mario79 455
;------------------------------------------------------------------------------
1391 mikedld 456
align 4
457
;------------------------------------------------------------------------------
1362 mikedld 458
set_window_defaults: ;/////////////////////////////////////////////////////////
459
;------------------------------------------------------------------------------
460
;? 
461
;------------------------------------------------------------------------------
1540 diamond 462
        mov     byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable
1362 mikedld 463
        push    eax ecx
464
        xor     eax, eax
465
        mov     ecx, WIN_STACK
2436 mario79 466
;--------------------------------------
467
align 4
468
@@:
2288 clevermous 469
        inc     eax
1362 mikedld 470
        add     ecx, 2
471
        ; process no
472
        mov     [ecx + 0x000], ax
473
        ; positions in stack
474
        mov     [ecx + 0x400], ax
475
        cmp     ecx, WIN_POS - 2
476
        jne     @b
477
        pop     ecx eax
478
        ret
2436 mario79 479
;------------------------------------------------------------------------------
1362 mikedld 480
align 4
481
;------------------------------------------------------------------------------
482
calculatescreen: ;/////////////////////////////////////////////////////////////
483
;------------------------------------------------------------------------------
484
;? Scan all windows from bottom to top, calling `setscreen` for each one
485
;? intersecting given screen area
486
;------------------------------------------------------------------------------
487
;> eax = left
488
;> ebx = top
489
;> ecx = right
490
;> edx = bottom
491
;------------------------------------------------------------------------------
492
        push    esi
493
        pushfd
494
        cli
495
 
496
        mov     esi, 1
497
        call    window._.set_screen
498
 
499
        push    ebp
500
 
501
        mov     ebp, [TASK_COUNT]
502
        cmp     ebp, 1
503
        jbe     .exit
504
 
505
        push    edx ecx ebx eax
2436 mario79 506
;--------------------------------------
507
align 4
508
.next_window:
1362 mikedld 509
        movzx   edi, word[WIN_POS + esi * 2]
510
        shl     edi, 5
511
 
512
        cmp     [CURRENT_TASK + edi + TASKDATA.state], TSTATE_FREE
513
        je      .skip_window
514
 
515
        add     edi, window_data
516
        test    [edi + WDATA.fl_wstate], WSTATE_MINIMIZED
517
        jnz     .skip_window
518
 
519
        mov     eax, [edi + WDATA.box.left]
520
        cmp     eax, [esp + RECT.right]
1368 mikedld 521
        jg      .skip_window
1362 mikedld 522
        mov     ebx, [edi + WDATA.box.top]
523
        cmp     ebx, [esp + RECT.bottom]
1368 mikedld 524
        jg      .skip_window
1362 mikedld 525
        mov     ecx, [edi + WDATA.box.width]
526
        add     ecx, eax
527
        cmp     ecx, [esp + RECT.left]
1368 mikedld 528
        jl      .skip_window
1362 mikedld 529
        mov     edx, [edi + WDATA.box.height]
530
        add     edx, ebx
531
        cmp     edx, [esp + RECT.top]
1368 mikedld 532
        jl      .skip_window
1362 mikedld 533
 
534
        cmp     eax, [esp + RECT.left]
535
        jae     @f
536
        mov     eax, [esp + RECT.left]
2436 mario79 537
;--------------------------------------
538
align 4
539
@@:
2288 clevermous 540
        cmp     ebx, [esp + RECT.top]
1362 mikedld 541
        jae     @f
542
        mov     ebx, [esp + RECT.top]
2436 mario79 543
;--------------------------------------
544
align 4
545
@@:
2288 clevermous 546
        cmp     ecx, [esp + RECT.right]
1362 mikedld 547
        jbe     @f
548
        mov     ecx, [esp + RECT.right]
2436 mario79 549
;--------------------------------------
550
align 4
551
@@:
2288 clevermous 552
        cmp     edx, [esp + RECT.bottom]
1362 mikedld 553
        jbe     @f
554
        mov     edx, [esp + RECT.bottom]
2436 mario79 555
;--------------------------------------
556
align 4
557
@@:
2288 clevermous 558
        push    esi
1362 mikedld 559
        movzx   esi, word[WIN_POS + esi * 2]
560
        call    window._.set_screen
561
        pop     esi
2436 mario79 562
;--------------------------------------
563
align 4
564
.skip_window:
1362 mikedld 565
        inc     esi
566
        dec     ebp
567
        jnz     .next_window
568
 
569
        pop     eax ebx ecx edx
2436 mario79 570
;--------------------------------------
571
align 4
572
.exit:
1362 mikedld 573
        pop     ebp
2443 Serge 574
        inc     [_display.mask_seqno]
1362 mikedld 575
        popfd
576
        pop     esi
577
        ret
2436 mario79 578
;------------------------------------------------------------------------------
1362 mikedld 579
align 4
580
;------------------------------------------------------------------------------
581
repos_windows: ;///////////////////////////////////////////////////////////////
582
;------------------------------------------------------------------------------
583
;? 
584
;------------------------------------------------------------------------------
585
        mov     ecx, [TASK_COUNT]
2381 hidnplayr 586
        mov     edi, window_data + sizeof.WDATA * 2
1362 mikedld 587
        call    force_redraw_background
588
        dec     ecx
589
        jle     .exit
2436 mario79 590
;--------------------------------------
591
align 4
592
.next_window:
1362 mikedld 593
        mov     [edi + WDATA.fl_redraw], 1
594
        test    [edi + WDATA.fl_wstate], WSTATE_MAXIMIZED
595
        jnz     .fix_maximized
596
 
597
        mov     eax, [edi + WDATA.box.left]
598
        add     eax, [edi + WDATA.box.width]
5350 serge 599
        mov     ebx, [_display.width]
1362 mikedld 600
        cmp     eax, ebx
5350 serge 601
        jl      .fix_vertical
1362 mikedld 602
        mov     eax, [edi + WDATA.box.width]
603
        sub     eax, ebx
5350 serge 604
        jl      @f
1362 mikedld 605
        mov     [edi + WDATA.box.width], ebx
2436 mario79 606
;--------------------------------------
607
align 4
608
@@:
2288 clevermous 609
        sub     ebx, [edi + WDATA.box.width]
1362 mikedld 610
        mov     [edi + WDATA.box.left], ebx
2436 mario79 611
;--------------------------------------
612
align 4
613
.fix_vertical:
1362 mikedld 614
        mov     eax, [edi + WDATA.box.top]
615
        add     eax, [edi + WDATA.box.height]
5350 serge 616
        mov     ebx, [_display.height]
1362 mikedld 617
        cmp     eax, ebx
5350 serge 618
        jl      .fix_client_box
1362 mikedld 619
        mov     eax, [edi + WDATA.box.height]
620
        sub     eax, ebx
5350 serge 621
        jl      @f
1362 mikedld 622
        mov     [edi + WDATA.box.height], ebx
2436 mario79 623
;--------------------------------------
624
align 4
625
@@:
2288 clevermous 626
        sub     ebx, [edi + WDATA.box.height]
1362 mikedld 627
        mov     [edi + WDATA.box.top], ebx
2436 mario79 628
;--------------------------------------
629
align 4
630
.fix_client_box:
631
        call    window._.set_window_clientbox
632
        add     edi, sizeof.WDATA
633
        loop    .next_window
634
;--------------------------------------
635
align 4
636
.exit:
637
        ret
638
;--------------------------------------
639
align 4
640
.fix_maximized:
1362 mikedld 641
        mov     eax, [screen_workarea.left]
642
        mov     [edi + WDATA.box.left], eax
643
        sub     eax, [screen_workarea.right]
644
        neg     eax
645
        mov     [edi + WDATA.box.width], eax
646
        mov     eax, [screen_workarea.top]
647
        mov     [edi + WDATA.box.top], eax
648
        test    [edi + WDATA.fl_wstate], WSTATE_ROLLEDUP
649
        jnz     .fix_client_box
650
        sub     eax, [screen_workarea.bottom]
651
        neg     eax
652
        mov     [edi + WDATA.box.height], eax
2436 mario79 653
        jmp     .fix_client_box
1362 mikedld 654
;------------------------------------------------------------------------------
2436 mario79 655
;align 4
1362 mikedld 656
;------------------------------------------------------------------------------
2436 mario79 657
;sys_window_mouse: ;////////////////////////////////////////////////////////////
658
;------------------------------------------------------------------------------
1362 mikedld 659
;? 
660
;-----------------------------------------------------