forked from offtopia/ponydos
Limit size of windows and don't print outside screen region
This commit is contained in:
parent
69e80e9ec5
commit
b2697f2bff
1 changed files with 13 additions and 5 deletions
18
shell.asm
18
shell.asm
|
@ -148,17 +148,21 @@ paint:
|
||||||
mov bp, [si + window.y]
|
mov bp, [si + window.y]
|
||||||
mov si, [si + window.data]
|
mov si, [si + window.data]
|
||||||
|
|
||||||
|
add dx, bp
|
||||||
|
cmp dx, ROWS
|
||||||
|
jle .no_clipping_height
|
||||||
|
mov dx, ROWS
|
||||||
|
.no_clipping_height:
|
||||||
|
sub dx, bp
|
||||||
|
|
||||||
mov cx, bx
|
mov cx, bx
|
||||||
add cx, di
|
add cx, di
|
||||||
cmp cx, COLUMNS
|
cmp cx, COLUMNS
|
||||||
jle .no_clipping
|
jle .no_clipping_width
|
||||||
mov cx, COLUMNS
|
mov cx, COLUMNS
|
||||||
|
.no_clipping_width:
|
||||||
sub cx, di
|
sub cx, di
|
||||||
jmp .clipping_done
|
|
||||||
|
|
||||||
.no_clipping:
|
|
||||||
mov cx, bx
|
|
||||||
.clipping_done:
|
|
||||||
call PONYDOS_SEG:SYS_DRAW_RECT
|
call PONYDOS_SEG:SYS_DRAW_RECT
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
@ -253,6 +257,8 @@ resize:
|
||||||
jc .x
|
jc .x
|
||||||
cmp dx, WINDOW_MIN_HEIGHT
|
cmp dx, WINDOW_MIN_HEIGHT
|
||||||
jl .x
|
jl .x
|
||||||
|
cmp dx, ROWS
|
||||||
|
jg .x
|
||||||
|
|
||||||
mov [si + window.y], bx
|
mov [si + window.y], bx
|
||||||
mov [si + window.height], dx
|
mov [si + window.height], dx
|
||||||
|
@ -263,6 +269,8 @@ resize:
|
||||||
jc .done
|
jc .done
|
||||||
cmp dx, WINDOW_MIN_WIDTH
|
cmp dx, WINDOW_MIN_WIDTH
|
||||||
jl .done
|
jl .done
|
||||||
|
cmp dx, COLUMNS
|
||||||
|
jg .done
|
||||||
|
|
||||||
mov [si + window.x], cx
|
mov [si + window.x], cx
|
||||||
mov [si + window.width], dx
|
mov [si + window.width], dx
|
||||||
|
|
Loading…
Reference in a new issue