Change cursor style handling so tmux understands which sequences contain

blinking and sets the flag appropriately, means that it works whether cnorm
disables blinking or not. GitHub issue 2682.
This commit is contained in:
Nicholas Marriott
2021-04-28 09:15:11 +01:00
parent cf6034da92
commit 589d3eb48f
3 changed files with 120 additions and 43 deletions

View File

@ -80,7 +80,7 @@ screen_init(struct screen *s, u_int sx, u_int sy, u_int hlimit)
s->titles = NULL;
s->path = NULL;
s->cstyle = 0;
s->cstyle = SCREEN_CURSOR_DEFAULT;
s->ccolour = xstrdup("");
s->tabs = NULL;
s->sel = NULL;
@ -155,9 +155,35 @@ screen_reset_tabs(struct screen *s)
void
screen_set_cursor_style(struct screen *s, u_int style)
{
if (style <= 6) {
s->cstyle = style;
switch (style)
{
case 0:
s->cstyle = SCREEN_CURSOR_DEFAULT;
break;
case 1:
s->cstyle = SCREEN_CURSOR_BLOCK;
s->mode |= MODE_BLINKING;
break;
case 2:
s->cstyle = SCREEN_CURSOR_BLOCK;
s->mode &= ~MODE_BLINKING;
break;
case 3:
s->cstyle = SCREEN_CURSOR_UNDERLINE;
s->mode |= MODE_BLINKING;
break;
case 4:
s->cstyle = SCREEN_CURSOR_UNDERLINE;
s->mode &= ~MODE_BLINKING;
break;
case 5:
s->cstyle = SCREEN_CURSOR_BAR;
s->mode |= MODE_BLINKING;
break;
case 6:
s->cstyle = SCREEN_CURSOR_BAR;
s->mode &= ~MODE_BLINKING;
break;
}
}