show dark cursor when unfocused. - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit be2877cd042eaf5d0f7dda102f526357aa577232
 (DIR) parent d8e11bdb0ecbccbaab7d944a577b9557ccff5d52
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Wed, 15 Feb 2012 19:33:48 +0100
       
       show dark cursor when unfocused.
       
       Diffstat:
         TODO                                |       7 ++++++-
         config.def.h                        |      10 ++++++----
         st.c                                |       8 ++++++--
       
       3 files changed, 18 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/TODO b/TODO
       @@ -10,10 +10,15 @@ code & interface
        
        * clean selection code
        * clean and complete terminfo entry
       -* fix shift up/down (shift selection in emacs)
        * fast drawing
        * ...
        
       +bugs
       +----
       +
       +* handle XOpenMI() errors
       +* fix shift up/down (shift selection in emacs)
       +
        misc
        ----
        
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -32,13 +32,15 @@ static const char *colorname[] = {
                
                /* more colors can be added to use with DefaultXX */
                "#cccccc",
       +        "#333333",
        };
        
        /* Default colors (colorname index)
       -   foreground, background, cursor   */
       -#define DefaultFG 7
       -#define DefaultBG 0
       -#define DefaultCS 16
       +   foreground, background, cursor, unfocused cursor */
       +#define DefaultFG  7
       +#define DefaultBG  0
       +#define DefaultCS  16
       +#define DefaultUCS 17
        
        /* Special keys (change & recompile st.info accordingly)
           Keep in mind that kpress() in st.c hardcodes some keys.
 (DIR) diff --git a/st.c b/st.c
       @@ -1826,10 +1826,14 @@ xdrawcursor(void) {
                xcopy(oldx, oldy, 1, 1);
        
                /* draw the new one */
       -        if(!(term.c.state & CURSOR_HIDE) && (xw.state & WIN_FOCUSED)) {
       -                sl = utf8size(g.c);
       +        if(!(term.c.state & CURSOR_HIDE)) {
       +                if(!(xw.state & WIN_FOCUSED))
       +                        g.bg = DefaultUCS;
       +
                        if(IS_SET(MODE_REVERSE))
                                g.mode |= ATTR_REVERSE, g.fg = DefaultCS, g.bg = DefaultFG;
       +
       +                sl = utf8size(g.c);
                        xdraws(g.c, g, term.c.x, term.c.y, 1, sl);
                        oldx = term.c.x, oldy = term.c.y;
                }