Drawing a more visible rectangle as cursor on unfocus. - 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 1e7816c2023f48728e15cc4128ad8be163986902
 (DIR) parent 5dc48af29e9972527767977be3bbc9c072cf1c13
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat, 13 Apr 2013 09:44:00 +0200
       
       Drawing a more visible rectangle as cursor on unfocus.
       
       To have a more visible cursor on unfocused windows this patch makes st draw a
       rectangle around the terminal cell.
       
       Thanks Mark Hills <mark@xwax.org> for the suggestion!
       
       Diffstat:
         M config.def.h                        |       4 +---
         M st.c                                |      33 ++++++++++++++++++++++++-------
       
       2 files changed, 27 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -52,18 +52,16 @@ static const char *colorname[] = {
        
                /* more colors can be added after 255 to use with DefaultXX */
                "#cccccc",
       -        "#333333",
        };
        
        
        /*
         * Default colors (colorname index)
       - * foreground, background, cursor, unfocused cursor
       + * foreground, background, cursor
         */
        static unsigned int defaultfg = 7;
        static unsigned int defaultbg = 0;
        static unsigned int defaultcs = 256;
       -static unsigned int defaultucs = 257;
        
        /*
         * Colors used, when the specific fg == defaultfg. So in reverse mode this
 (DIR) diff --git a/st.c b/st.c
       @@ -2968,14 +2968,33 @@ xdrawcursor(void) {
        
                /* draw the new one */
                if(!(IS_SET(MODE_HIDE))) {
       -                if(!(xw.state & WIN_FOCUSED))
       -                        g.bg = defaultucs;
       -
       -                if(IS_SET(MODE_REVERSE))
       -                        g.mode |= ATTR_REVERSE, g.fg = defaultcs, g.bg = defaultfg;
       +                if(xw.state & WIN_FOCUSED) {
       +                        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);
       +                        sl = utf8size(g.c);
       +                        xdraws(g.c, g, term.c.x, term.c.y, 1, sl);
       +                } else {
       +                        XftDrawRect(xw.draw, &dc.col[defaultcs],
       +                                        borderpx + term.c.x * xw.cw,
       +                                        borderpx + term.c.y * xw.ch,
       +                                        xw.cw - 1, 1);
       +                        XftDrawRect(xw.draw, &dc.col[defaultcs],
       +                                        borderpx + term.c.x * xw.cw,
       +                                        borderpx + term.c.y * xw.ch,
       +                                        1, xw.ch - 1);
       +                        XftDrawRect(xw.draw, &dc.col[defaultcs],
       +                                        borderpx + (term.c.x + 1) * xw.cw - 1,
       +                                        borderpx + term.c.y * xw.ch,
       +                                        1, xw.ch - 1);
       +                        XftDrawRect(xw.draw, &dc.col[defaultcs],
       +                                        borderpx + term.c.x * xw.cw,
       +                                        borderpx + (term.c.y + 1) * xw.ch - 1,
       +                                        xw.cw, 1);
       +                }
                        oldx = term.c.x, oldy = term.c.y;
                }
        }