commit 1e7816c2023f48728e15cc4128ad8be163986902 from: Christoph Lohmann <20h@r-36.net> date: Sat Apr 13 07:44:00 2013 UTC 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 for the suggestion! commit - 5dc48af29e9972527767977be3bbc9c072cf1c13 commit + 1e7816c2023f48728e15cc4128ad8be163986902 blob - 2c972669645e8c2d760989263848c26a93432754 blob + d1c20bd96654a572d8202836b933840f7f61631c --- config.def.h +++ 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 blob - 23a43c18169c1124b6568d1c45bb078daf261164 blob + c4eafa0aa5171a61bc7fc241c8d2eb08dac0bb98 --- st.c +++ 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(xw.state & WIN_FOCUSED) { + if(IS_SET(MODE_REVERSE)) { + g.mode |= ATTR_REVERSE; + g.fg = defaultcs; + g.bg = defaultfg; + } - 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; } }