# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 1e7816c2023f48728e15cc4128ad8be163986902
    parent 5dc48af29e9972527767977be3bbc9c072cf1c13
    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:
    Mconfig.def.h | 4+---
    Mst.c | 33++++++++++++++++++++++++++-------

    2 files changed, 27 insertions(+), 10 deletions(-)
    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
    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;
     	}
     }