diff options
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 |
