JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Merge remote-tracking branch 'origin/master'
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 4 Feb 2014 10:46:45 +0000 (11:46 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 4 Feb 2014 10:46:45 +0000 (11:46 +0100)
1  2 
st.c

diff --combined st.c
--- 1/st.c
--- 2/st.c
+++ b/st.c
@@@ -953,12 -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))
@@@ -2153,21 -2152,20 +2153,21 @@@ csireset(void) 
  void
  strhandle(void) {
        char *p = NULL;
 -      int i, j, narg;
 +      int j, narg, par;
  
        strparse();
        narg = strescseq.narg;
 +      par = atoi(strescseq.args[0]);
  
        switch(strescseq.type) {
        case ']': /* OSC -- Operating System Command */
 -              switch(i = atoi(strescseq.args[0])) {
 +              switch(par) {
                case 0:
                case 1:
                case 2:
                        if(narg > 1)
                                xsettitle(strescseq.args[1]);
 -                      break;
 +                      return;
                case 4: /* color set */
                        if(narg < 3)
                                break;
                                 */
                                redraw(0);
                        }
 -                      break;
 -              default:
 -                      fprintf(stderr, "erresc: unknown str ");
 -                      strdump();
 -                      break;
 +                      return;
                }
                break;
        case 'k': /* old title set compatibility */
                xsettitle(strescseq.args[0]);
 -              break;
 +              return;
        case 'P': /* DSC -- Device Control String */
        case '_': /* APC -- Application Program Command */
        case '^': /* PM -- Privacy Message */
 -      default:
 -              fprintf(stderr, "erresc: unknown str ");
 -              strdump();
 -              /* die(""); */
 -              break;
 +              return;
        }
 +
 +      fprintf(stderr, "erresc: unknown str ");
 +      strdump();
  }
  
  void
@@@ -3298,8 -3301,6 +3298,6 @@@ xdraws(char *s, Glyph base, int x, int 
                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);
@@@ -3398,6 -3399,8 +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);