Normalize the whole color selection in xdrawcursor. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2ea02c937e3a1810050a5fb9f51e7e522d23af3b
 (DIR) parent 80fe97f8a66d31945bdddbb9381b2cc54359f48e
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Tue,  6 Oct 2015 00:21:44 +0200
       
       Normalize the whole color selection in xdrawcursor.
       
       Diffstat:
         M st.c                                |      33 +++++++++++++++++++++-----------
       
       1 file changed, 22 insertions(+), 11 deletions(-)
       ---
 (DIR) 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;