diff options
| author | Christoph Lohmann <20h@r-36.net> | 2013-04-13 09:44:00 +0200 | 
|---|---|---|
| committer | Christoph Lohmann <20h@r-36.net> | 2013-04-13 09:44:00 +0200 | 
| commit | 1e7816c2023f48728e15cc4128ad8be163986902 (patch) | |
| tree | 7e02805529326cc235ade1c2e139d98d621eaf74 | |
| parent | 5dc48af29e9972527767977be3bbc9c072cf1c13 (diff) | |
| download | st-1e7816c2023f48728e15cc4128ad8be163986902.tar.xz st-1e7816c2023f48728e15cc4128ad8be163986902.zip  | |
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!
| -rw-r--r-- | config.def.h | 4 | ||||
| -rw-r--r-- | st.c | 33 | 
2 files changed, 27 insertions, 10 deletions
diff --git a/config.def.h b/config.def.h index 2c97266..d1c20bd 100644 --- 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 @@ -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;  	}  }  | 
