st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 160bda1b60148ce8f7d3b001ada2b12f1da9e152
parent 596bb133a55a6aba13b55795a9a38e29fcf1b38b
Author: Aurélien Aptel <aurelien.aptel@gmail.com>
Date:   Tue, 31 Aug 2010 11:02:17 +0200

toggle ATTR_REVERSE on selected text, factored some code and fixed Makefile.

Diffstat:
MMakefile | 2+-
Mst.c | 25++++++++-----------------
2 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/Makefile b/Makefile
@@ -8,7 +8,7 @@ OBJ = ${SRC:.c=.o}
 
 all: options st
 
-options: options
+options:
     @echo st build options:
     @echo "CFLAGS   = ${CFLAGS}"
     @echo "LDFLAGS  = ${LDFLAGS}"
diff --git a/st.c b/st.c
@@ -828,22 +828,17 @@ csihandle(void) {
             case 25:
                 term.c.state |= CURSOR_HIDE;
                 break;
+            case 1049: /* = 1047 and 1048 */
             case 1047:
                 if(IS_SET(MODE_ALTSCREEN)) {
                     tclearregion(0, 0, term.col-1, term.row-1);
                     tswapscreen();
                 }
-                break;
+                if(escseq.arg[0] == 1047)
+                    break;
             case 1048:
                 tcursor(CURSOR_LOAD);
                 break;
-            case 1049:
-                tcursor(CURSOR_LOAD);
-                if(IS_SET(MODE_ALTSCREEN)) {
-                    tclearregion(0, 0, term.col-1, term.row-1);
-                    tswapscreen();
-                }
-                break;
             default:
                 goto unknown;
             }
@@ -888,22 +883,17 @@ csihandle(void) {
             case 25:
                 term.c.state &= ~CURSOR_HIDE;
                 break;
+            case 1049: /* = 1047 and 1048 */
             case 1047:
                 if(IS_SET(MODE_ALTSCREEN))
                     tclearregion(0, 0, term.col-1, term.row-1);
                 else
                     tswapscreen();
-                break;                
+                if(escseq.arg[0] == 1047)
+                    break;
             case 1048:
                 tcursor(CURSOR_SAVE);
                 break;
-            case 1049:
-                tcursor(CURSOR_SAVE);
-                if(IS_SET(MODE_ALTSCREEN))
-                    tclearregion(0, 0, term.col-1, term.row-1);
-                else
-                    tswapscreen();
-                break;
             default: goto unknown;
             }
         } else {
@@ -1222,6 +1212,7 @@ xinit(void) {
     xw.bufw = xw.w - 2*BORDER;
     xw.bufh = xw.h - 2*BORDER;
     xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr));
+    xw.hasfocus = 1;
     /* gc */
     dc.gc = XCreateGC(xw.dis, xw.win, 0, NULL);
     XMapWindow(xw.dis, xw.win);
@@ -1322,7 +1313,7 @@ draw(int redraw_all) {
         for(x = 0; x < term.col; x++) {
             new = term.line[y][x];
             if(selbx!=-1 && new.c && selected(x, y))
-                new.mode = ATTR_REVERSE;
+                new.mode ^= ATTR_REVERSE;
             if(i > 0 && (!(new.state & GLYPH_SET) || ATTRCMP(base, new) ||
                     i >= DRAW_BUF_SIZ)) {
                 xdraws(buf, base, ox, y, i);