st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 2ea02c937e3a1810050a5fb9f51e7e522d23af3b
parent 80fe97f8a66d31945bdddbb9381b2cc54359f48e
Author: Christoph Lohmann <20h@r-36.net>
Date:   Tue,  6 Oct 2015 00:21:44 +0200

Normalize the whole color selection in xdrawcursor.

Diffstat:
Mst.c | 33++++++++++++++++++++++-----------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/st.c b/st.c
@@ -3850,12 +3850,29 @@ xdrawcursor(void)
     xdrawglyph(og, oldx, oldy);
 
     g.u = term.line[term.c.y][term.c.x].u;
-    if (ena_sel && selected(term.c.x, term.c.y)) {
-        drawcol = dc.col[defaultrcs];
-        g.fg = defaultfg;
-        g.bg = defaultrcs;
+
+    /*
+     * Select the right color for the right mode.
+     */
+    if (IS_SET(MODE_REVERSE)) {
+        g.mode |= ATTR_REVERSE;
+        g.bg = defaultfg;
+        if (ena_sel && selected(term.c.x, term.c.y)) {
+            drawcol = dc.col[defaultcs];
+            g.fg = defaultrcs;
+        } else {
+            drawcol = dc.col[defaultrcs];
+            g.fg = defaultcs;
+        }
     } else {
-        drawcol = dc.col[defaultcs];
+        g.fg = defaultfg;
+        if (ena_sel && selected(term.c.x, term.c.y)) {
+            g.bg = defaultcs;
+            drawcol = dc.col[defaultrcs];
+        } else {
+            drawcol = dc.col[defaultcs];
+            g.bg = defaultrcs;
+        }
     }
 
     if (IS_SET(MODE_HIDE))
@@ -3869,12 +3886,6 @@ xdrawcursor(void)
         case 0: /* Blinking Block */
         case 1: /* Blinking Block (Default) */
         case 2: /* Steady Block */
-            if (IS_SET(MODE_REVERSE)) {
-                g.mode |= ATTR_REVERSE;
-                g.fg = defaultcs;
-                g.bg = defaultfg;
-            }
-
             g.mode |= term.line[term.c.y][curx].mode & ATTR_WIDE;
             xdrawglyph(g, term.c.x, term.c.y);
             break;