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!
This commit is contained in:
parent
5dc48af29e
commit
1e7816c202
2 changed files with 27 additions and 10 deletions
|
@ -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
|
||||||
|
|
33
st.c
33
st.c
|
@ -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))
|
if(xw.state & WIN_FOCUSED) {
|
||||||
g.bg = defaultucs;
|
if(IS_SET(MODE_REVERSE)) {
|
||||||
|
g.mode |= ATTR_REVERSE;
|
||||||
|
g.fg = defaultcs;
|
||||||
|
g.bg = defaultfg;
|
||||||
|
}
|
||||||
|
|
||||||
if(IS_SET(MODE_REVERSE))
|
sl = utf8size(g.c);
|
||||||
g.mode |= ATTR_REVERSE, g.fg = defaultcs, g.bg = defaultfg;
|
xdraws(g.c, g, term.c.x, term.c.y, 1, sl);
|
||||||
|
} else {
|
||||||
sl = utf8size(g.c);
|
XftDrawRect(xw.draw, &dc.col[defaultcs],
|
||||||
xdraws(g.c, g, term.c.x, term.c.y, 1, sl);
|
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…
Reference in a new issue