Merge branch 'obsd-master' into master

This commit is contained in:
Thomas Adam
2021-11-03 16:01:14 +00:00
7 changed files with 91 additions and 36 deletions

View File

@ -81,6 +81,8 @@ screen_init(struct screen *s, u_int sx, u_int sy, u_int hlimit)
s->path = NULL;
s->cstyle = SCREEN_CURSOR_DEFAULT;
s->default_cstyle = SCREEN_CURSOR_DEFAULT;
s->default_mode = 0;
s->ccolour = -1;
s->default_ccolour = -1;
s->tabs = NULL;
@ -151,38 +153,38 @@ screen_reset_tabs(struct screen *s)
bit_set(s->tabs, i);
}
/* Set screen cursor style. */
/* Set screen cursor style and mode. */
void
screen_set_cursor_style(struct screen *s, u_int style)
screen_set_cursor_style(u_int style, enum screen_cursor_style *cstyle,
int *mode)
{
log_debug("%s: new %u, was %u", __func__, style, s->cstyle);
switch (style) {
case 0:
s->cstyle = SCREEN_CURSOR_DEFAULT;
*cstyle = SCREEN_CURSOR_DEFAULT;
break;
case 1:
s->cstyle = SCREEN_CURSOR_BLOCK;
s->mode |= MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_BLOCK;
*mode |= MODE_CURSOR_BLINKING;
break;
case 2:
s->cstyle = SCREEN_CURSOR_BLOCK;
s->mode &= ~MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_BLOCK;
*mode &= ~MODE_CURSOR_BLINKING;
break;
case 3:
s->cstyle = SCREEN_CURSOR_UNDERLINE;
s->mode |= MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_UNDERLINE;
*mode |= MODE_CURSOR_BLINKING;
break;
case 4:
s->cstyle = SCREEN_CURSOR_UNDERLINE;
s->mode &= ~MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_UNDERLINE;
*mode &= ~MODE_CURSOR_BLINKING;
break;
case 5:
s->cstyle = SCREEN_CURSOR_BAR;
s->mode |= MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_BAR;
*mode |= MODE_CURSOR_BLINKING;
break;
case 6:
s->cstyle = SCREEN_CURSOR_BAR;
s->mode &= ~MODE_CURSOR_BLINKING;
*cstyle = SCREEN_CURSOR_BAR;
*mode &= ~MODE_CURSOR_BLINKING;
break;
}
}