Browse Source

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!
master
Christoph Lohmann 11 years ago
parent
commit
1e7816c202
2 changed files with 27 additions and 10 deletions
  1. +1
    -3
      config.def.h
  2. +26
    -7
      st.c

+ 1
- 3
config.def.h View File

@ -52,18 +52,16 @@ static const char *colorname[] = {
/* more colors can be added after 255 to use with DefaultXX */ /* more colors can be added after 255 to use with DefaultXX */
"#cccccc", "#cccccc",
"#333333",
}; };
/* /*
* Default colors (colorname index) * Default colors (colorname index)
* foreground, background, cursor, unfocused cursor
* foreground, background, cursor
*/ */
static unsigned int defaultfg = 7; static unsigned int defaultfg = 7;
static unsigned int defaultbg = 0; static unsigned int defaultbg = 0;
static unsigned int defaultcs = 256; static unsigned int defaultcs = 256;
static unsigned int defaultucs = 257;
/* /*
* Colors used, when the specific fg == defaultfg. So in reverse mode this * Colors used, when the specific fg == defaultfg. So in reverse mode this


+ 26
- 7
st.c View File

@ -2968,14 +2968,33 @@ xdrawcursor(void) {
/* draw the new one */ /* draw the new one */
if(!(IS_SET(MODE_HIDE))) { 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; oldx = term.c.x, oldy = term.c.y;
} }
} }


Loading…
Cancel
Save