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:
nicm
2021-06-10 07:36:47 +00:00
parent 84e22168a5
commit f9f97c8145
3 changed files with 120 additions and 43 deletions

View File

@ -81,7 +81,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;
@ -156,9 +156,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;
}
}