diff options
author | Devin J. Pohly <djpohly@djpohly.com> | 2010-10-25 15:26:47 -0400 |
---|---|---|
committer | Devin J. Pohly <djpohly@djpohly.com> | 2010-10-25 15:26:47 -0400 |
commit | d85f7319a2c0d0bc53c1e0be6539284823fe7389 (patch) | |
tree | 241a62ec279b335c98d18daa834d4a788beaae82 /st.c | |
parent | 12435817723b44189bd412937403c401e5bbc136 (diff) | |
download | st-d85f7319a2c0d0bc53c1e0be6539284823fe7389.tar.gz |
copy old pixmap to new on resize
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -1260,10 +1260,24 @@ tresize(int col, int row) { void xresize(int col, int row) { + Pixmap newbuf; + int oldw, oldh; + + oldw = xw.bufw; + oldh = xw.bufh; xw.bufw = MAX(1, col * xw.cw); xw.bufh = MAX(1, row * xw.ch); + newbuf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); + XCopyArea(xw.dis, xw.buf, newbuf, dc.gc, 0, 0, xw.bufw, xw.bufh, 0, 0); XFreePixmap(xw.dis, xw.buf); - xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); + XSetForeground(xw.dis, dc.gc, dc.col[DefaultBG]); + if(xw.bufw > oldw) + XFillRectangle(xw.dis, newbuf, dc.gc, oldw, 0, + xw.bufw-oldw, MIN(xw.bufh, oldh)); + if(xw.bufh > oldh) + XFillRectangle(xw.dis, newbuf, dc.gc, 0, oldh, + xw.bufw, xw.bufh-oldh); + xw.buf = newbuf; } void |