JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Merge remote-tracking branch 'origin/master'
[st.git] / st.c
diff --git a/st.c b/st.c
index c59bf1d..37bec70 100644 (file)
--- a/st.c
+++ b/st.c
@@ -953,11 +953,12 @@ selcopy(void) {
                /* append every set & selected glyph to the selection */
                for(y = sel.nb.y; y < sel.ne.y + 1; y++) {
                        gp = &term.line[y][0];
-                       last = gp + term.col;
+                       last = &gp[term.col-1];
 
-                       while(--last >= gp && !(selected(last - gp, y) && \
-                                               strcmp(last->c, " ") != 0))
-                               /* nothing */;
+                       while(last >= gp && !(selected(last - gp, y) &&
+                                             strcmp(last->c, " ") != 0)) {
+                               --last;
+                       }
 
                        for(x = 0; gp <= last; x++, ++gp) {
                                if(!selected(x, y) || (gp->mode & ATTR_WDUMMY))
@@ -3297,8 +3298,6 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
                XftDrawRect(xw.draw, fg, winx, winy + font->ascent + 1,
                                width, 1);
        }
-       XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, winx, winy, width,
-                       CEIL((font->ascent + font->descent) * chscale), winx, winy);
 
        /* Reset clip to none. */
        XftDrawSetClip(xw.draw, 0);
@@ -3397,6 +3396,8 @@ redraw(int timeout) {
 void
 draw(void) {
        drawregion(0, 0, term.col, term.row);
+       XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
+                       xw.h, 0, 0);
        XSetForeground(xw.dpy, dc.gc,
                        dc.col[IS_SET(MODE_REVERSE)?
                                defaultfg : defaultbg].pixel);