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 st-d85f7319a2c0d0bc53c1e0be6539284823fe7389.zip |
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) { | |||
1260 | 1260 | ||
1261 | void | 1261 | void |
1262 | xresize(int col, int row) { | 1262 | xresize(int col, int row) { |
1263 | Pixmap newbuf; | ||
1264 | int oldw, oldh; | ||
1265 | |||
1266 | oldw = xw.bufw; | ||
1267 | oldh = xw.bufh; | ||
1263 | xw.bufw = MAX(1, col * xw.cw); | 1268 | xw.bufw = MAX(1, col * xw.cw); |
1264 | xw.bufh = MAX(1, row * xw.ch); | 1269 | xw.bufh = MAX(1, row * xw.ch); |
1270 | newbuf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); | ||
1271 | XCopyArea(xw.dis, xw.buf, newbuf, dc.gc, 0, 0, xw.bufw, xw.bufh, 0, 0); | ||
1265 | XFreePixmap(xw.dis, xw.buf); | 1272 | XFreePixmap(xw.dis, xw.buf); |
1266 | xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); | 1273 | XSetForeground(xw.dis, dc.gc, dc.col[DefaultBG]); |
1274 | if(xw.bufw > oldw) | ||
1275 | XFillRectangle(xw.dis, newbuf, dc.gc, oldw, 0, | ||
1276 | xw.bufw-oldw, MIN(xw.bufh, oldh)); | ||
1277 | if(xw.bufh > oldh) | ||
1278 | XFillRectangle(xw.dis, newbuf, dc.gc, 0, oldh, | ||
1279 | xw.bufw, xw.bufh-oldh); | ||
1280 | xw.buf = newbuf; | ||
1267 | } | 1281 | } |
1268 | 1282 | ||
1269 | void | 1283 | void |