- 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.dpy, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dpy, xw.scr));
- XCopyArea(xw.dpy, xw.buf, newbuf, dc.gc, 0, 0, xw.bufw, xw.bufh, 0, 0);
- XFreePixmap(xw.dpy, xw.buf);
- XSetForeground(xw.dpy, dc.gc, dc.col[DefaultBG]);
- if(xw.bufw > oldw)
- XFillRectangle(xw.dpy, newbuf, dc.gc, oldw, 0,
- xw.bufw-oldw, MIN(xw.bufh, oldh));
- else if(xw.bufw < oldw && (BORDER > 0 || xw.w > xw.bufw))
- XClearArea(xw.dpy, xw.win, BORDER+xw.bufw, BORDER,
- xw.w-xw.bufh-BORDER, BORDER+MIN(xw.bufh, oldh),
- False);
- if(xw.bufh > oldh)
- XFillRectangle(xw.dpy, newbuf, dc.gc, 0, oldh,
- xw.bufw, xw.bufh-oldh);
- else if(xw.bufh < oldh && (BORDER > 0 || xw.h > xw.bufh))
- XClearArea(xw.dpy, xw.win, BORDER, BORDER+xw.bufh,
- xw.w-2*BORDER, xw.h-xw.bufh-BORDER,
- False);
- xw.buf = newbuf;