apply blinking_cursor patch
Tweak the Xresources loading to use the new variable.master
parent
6d944657ba
commit
1713adec5f
19
config.def.h
19
config.def.h
|
|
@ -135,13 +135,20 @@ unsigned int defaultcs = 256;
|
|||
static unsigned int defaultrcs = 257;
|
||||
|
||||
/*
|
||||
* Default shape of cursor
|
||||
* 2: Block ("█")
|
||||
* 4: Underline ("_")
|
||||
* 6: Bar ("|")
|
||||
* 7: Snowman ("☃")
|
||||
* https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
|
||||
* Default style of cursor
|
||||
* 0: blinking block
|
||||
* 1: blinking block (default)
|
||||
* 2: steady block ("█")
|
||||
* 3: blinking underline
|
||||
* 4: steady underline ("_")
|
||||
* 5: blinking bar
|
||||
* 6: steady bar ("|")
|
||||
* 7: blinking st cursor
|
||||
* 8: steady st cursor
|
||||
*/
|
||||
static unsigned int cursorshape = 2;
|
||||
static unsigned int cursorstyle = 1;
|
||||
static Rune stcursor = 0x2603; /* snowman ("☃") */
|
||||
|
||||
/*
|
||||
* Default columns and rows numbers
|
||||
|
|
|
|||
47
x.c
47
x.c
|
|
@ -255,6 +255,7 @@ static char *opt_name = NULL;
|
|||
static char *opt_title = NULL;
|
||||
|
||||
static uint buttons; /* bit field of pressed buttons */
|
||||
static int cursorblinks = 0;
|
||||
|
||||
void
|
||||
clipcopy(const Arg *dummy)
|
||||
|
|
@ -1584,29 +1585,44 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
|
|||
/* draw the new one */
|
||||
if (IS_SET(MODE_FOCUSED)) {
|
||||
switch (win.cursor) {
|
||||
case 7: /* st extension */
|
||||
g.u = 0x2603; /* snowman (U+2603) */
|
||||
default:
|
||||
case 0: /* blinking block */
|
||||
case 1: /* blinking block (default) */
|
||||
if (IS_SET(MODE_BLINK))
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case 0: /* Blinking Block */
|
||||
case 1: /* Blinking Block (Default) */
|
||||
case 2: /* Steady Block */
|
||||
case 2: /* steady block */
|
||||
xdrawglyph(g, cx, cy);
|
||||
break;
|
||||
case 3: /* Blinking Underline */
|
||||
case 4: /* Steady Underline */
|
||||
case 3: /* blinking underline */
|
||||
if (IS_SET(MODE_BLINK))
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case 4: /* steady underline */
|
||||
XftDrawRect(xw.draw, &drawcol,
|
||||
win.hborderpx + cx * win.cw,
|
||||
win.vborderpx + (cy + 1) * win.ch - \
|
||||
cursorthickness,
|
||||
win.cw, cursorthickness);
|
||||
break;
|
||||
case 5: /* Blinking bar */
|
||||
case 6: /* Steady bar */
|
||||
case 5: /* blinking bar */
|
||||
if (IS_SET(MODE_BLINK))
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case 6: /* steady bar */
|
||||
XftDrawRect(xw.draw, &drawcol,
|
||||
win.hborderpx + cx * win.cw,
|
||||
win.vborderpx + cy * win.ch,
|
||||
cursorthickness, win.ch);
|
||||
break;
|
||||
case 7: /* blinking st cursor */
|
||||
if (IS_SET(MODE_BLINK))
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case 8: /* steady st cursor */
|
||||
g.u = stcursor;
|
||||
xdrawglyph(g, cx, cy);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
XftDrawRect(xw.draw, &drawcol,
|
||||
|
|
@ -1769,9 +1785,12 @@ xsetmode(int set, unsigned int flags)
|
|||
int
|
||||
xsetcursor(int cursor)
|
||||
{
|
||||
if (!BETWEEN(cursor, 0, 7)) /* 7: st extension */
|
||||
if (!BETWEEN(cursor, 0, 8)) /* 7-8: st extensions */
|
||||
return 1;
|
||||
win.cursor = cursor;
|
||||
cursorblinks = win.cursor == 0 || win.cursor == 1 ||
|
||||
win.cursor == 3 || win.cursor == 5 ||
|
||||
win.cursor == 7;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2018,6 +2037,10 @@ run(void)
|
|||
if (FD_ISSET(ttyfd, &rfd) || xev) {
|
||||
if (!drawing) {
|
||||
trigger = now;
|
||||
if (IS_SET(MODE_BLINK)) {
|
||||
win.mode ^= MODE_BLINK;
|
||||
}
|
||||
lastblink = now;
|
||||
drawing = 1;
|
||||
}
|
||||
timeout = (maxlatency - TIMEDIFF(now, trigger)) \
|
||||
|
|
@ -2028,7 +2051,7 @@ run(void)
|
|||
|
||||
/* idle detected or maxlatency exhausted -> draw */
|
||||
timeout = -1;
|
||||
if (blinktimeout && tattrset(ATTR_BLINK)) {
|
||||
if (blinktimeout && (cursorblinks || tattrset(ATTR_BLINK))) {
|
||||
timeout = blinktimeout - TIMEDIFF(now, lastblink);
|
||||
if (timeout <= 0) {
|
||||
if (-timeout > blinktimeout) /* start visible */
|
||||
|
|
@ -2064,7 +2087,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
xw.l = xw.t = 0;
|
||||
xw.isfixed = False;
|
||||
xsetcursor(cursorshape);
|
||||
xsetcursor(cursorstyle);
|
||||
|
||||
ARGBEGIN {
|
||||
case 'a':
|
||||
|
|
|
|||
Loading…
Reference in New Issue