JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Tmux wants this to be mutually exclusive.
[st.git] / st.c
diff --git a/st.c b/st.c
index fa4136a..8206001 100644 (file)
--- a/st.c
+++ b/st.c
@@ -807,7 +807,6 @@ void selclear(XEvent *e) {
 
 void
 selrequest(XEvent *e) {
-       fprintf(stderr, "selrequest\n");
        XSelectionRequestEvent *xsre;
        XSelectionEvent xev;
        Atom xa_targets, string;
@@ -843,7 +842,6 @@ selrequest(XEvent *e) {
 
 void
 xsetsel(char *str) {
-       fprintf(stderr, "xsetsel: %s\n", str);
        /* register the selection for both the clipboard and the primary */
        Atom clipboard;
 
@@ -1559,9 +1557,11 @@ tsetmode(bool priv, bool set, int *args, int narg) {
                                break;
                        case 1000: /* 1000,1002: enable xterm mouse report */
                                MODBIT(term.mode, set, MODE_MOUSEBTN);
+                               MODBIT(term.mode, 0, MODE_MOUSEMOTION);
                                break;
                        case 1002:
                                MODBIT(term.mode, set, MODE_MOUSEMOTION);
+                               MODBIT(term.mode, 0, MODE_MOUSEBTN);
                                break;
                        case 1006:
                                MODBIT(term.mode, set, MODE_MOUSESGR);
@@ -1745,8 +1745,8 @@ csihandle(void) {
                break;
        case 'X': /* ECH -- Erase <n> char */
                DEFAULT(csiescseq.arg[0], 1);
-               tclearregion(term.c.x, term.c.y, term.c.x + csiescseq.arg[0],
-                               term.c.y, 1);
+               tclearregion(term.c.x, term.c.y,
+                               term.c.x + csiescseq.arg[0] - 1, term.c.y, 1);
                break;
        case 'P': /* DCH -- Delete <n> char */
                DEFAULT(csiescseq.arg[0], 1);
@@ -2277,7 +2277,7 @@ xresize(int col, int row) {
                XFreePixmap(xw.dpy, xw.buf);
                xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
                                DefaultDepth(xw.dpy, xw.scr));
-               XSetForeground(xw.dpy, dc.gc, 0);
+               XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel);
                XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
        }
 
@@ -2442,7 +2442,9 @@ xloadfonts(char *fontstr, int fontsize) {
        xw.cw = dc.font.width;
        xw.ch = dc.font.height;
 
+       FcPatternDel(pattern, FC_SLANT);
        FcPatternDel(pattern, FC_WEIGHT);
+       FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
        FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
        if(xloadfont(&dc.bfont, pattern))
                die("st: can't open font %s\n", fontstr);
@@ -2453,6 +2455,7 @@ xloadfonts(char *fontstr, int fontsize) {
                die("st: can't open font %s\n", fontstr);
 
        FcPatternDel(pattern, FC_WEIGHT);
+       FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_MEDIUM);
        if(xloadfont(&dc.ifont, pattern))
                die("st: can't open font %s\n", fontstr);
 
@@ -2572,7 +2575,7 @@ xinit(void) {
                                &gcvalues);
                xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
                                DefaultDepth(xw.dpy, xw.scr));
-               XSetForeground(xw.dpy, dc.gc, 0);
+               XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
                XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
                //xw.buf = xw.win;
        /*
@@ -2896,7 +2899,7 @@ draw(void) {
        } else {
                XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w,
                                xw.h, 0, 0);
-               XSetForeground(xw.dpy, dc.gc, 0);
+               XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel);
        }
 }
 
@@ -2988,6 +2991,11 @@ xseturgency(int add) {
 
 void
 focus(XEvent *ev) {
+       XFocusChangeEvent *e = &ev->xfocus;
+
+       if(e->mode == NotifyGrab)
+               return;
+
        if(ev->type == FocusIn) {
                XSetICFocus(xw.xic);
                xw.state |= WIN_FOCUSED;