Fixing the redrawing patch of k0ga, so it's using xclear() in redraw() too. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit e4bf2679c1bbbd4d4a8bfdf9c1a143b59ce5888c
 (DIR) parent 4876d6e05b6c1b17b0c366f15ae72ae48f045068
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Mon, 17 Sep 2012 22:44:27 +0200
       
       Fixing the redrawing patch of k0ga, so it's using xclear() in redraw() too.
       
       Diffstat:
         M st.c                                |      16 +++++++++-------
       
       1 file changed, 9 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -198,6 +198,7 @@ typedef struct {
                int scr;
                Bool isfixed; /* is fixed geometry? */
                int fx, fy, fw, fh; /* fixed geometry */
       +        int tw, th; /* tty width and height */
                int w;        /* window width */
                int h;        /* window height */
                int ch; /* char height */
       @@ -894,8 +895,8 @@ ttyresize(int x, int y) {
        
                w.ws_row = term.row;
                w.ws_col = term.col;
       -        w.ws_xpixel = xw.w;
       -        w.ws_ypixel = xw.h;
       +        w.ws_xpixel = xw.tw;
       +        w.ws_ypixel = xw.th;
                if(ioctl(cmdfd, TIOCSWINSZ, &w) < 0)
                        fprintf(stderr, "Couldn't set window size: %s\n", SERRNO);
        }
       @@ -1837,11 +1838,8 @@ tresize(int col, int row) {
        
        void
        xresize(int col, int row) {
       -        xw.w = MAX(1, 2*BORDER + col * xw.cw);
       -        xw.h = MAX(1, 2*BORDER + row * xw.ch);
       -        XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0,
       -                       DisplayWidth(xw.dpy, xw.scr),
       -                       DisplayHeight(xw.dpy, xw.scr));
       +        xw.tw = MAX(1, 2*BORDER + col * xw.cw);
       +        xw.th = MAX(1, 2*BORDER + row * xw.ch);
        }
        
        void
       @@ -2145,6 +2143,8 @@ xresettitle(void) {
        void
        redraw(void) {
                struct timespec tv = {0, REDRAW_TIMEOUT * 1000};
       +
       +        xclear(0, 0, xw.w, xw.h);
                tfulldirt();
                draw();
                XSync(xw.dpy, False); /* necessary for a good tput flash */
       @@ -2334,6 +2334,8 @@ resize(XEvent *e) {
                row = (xw.h - 2*BORDER) / xw.ch;
                if(col == term.col && row == term.row)
                        return;
       +
       +        xclear(0, 0, xw.w, xw.h);
                tresize(col, row);
                xresize(col, row);
                ttyresize(col, row);