term/vt/csi: break out cursor save/restore to dedicated functions

This commit is contained in:
Daniel Eklöf 2021-01-15 17:08:30 +01:00
parent c0a3f89775
commit bae3c871bb
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 15 additions and 10 deletions

6
csi.c
View file

@ -1141,15 +1141,11 @@ csi_dispatch(struct terminal *term, uint8_t final)
} }
case 's': case 's':
term->grid->saved_cursor = term->grid->cursor; term_save_cursor(term);
term->vt.saved_attrs = term->vt.attrs;
term->saved_charsets = term->charsets;
break; break;
case 'u': case 'u':
term_restore_cursor(term, &term->grid->saved_cursor); term_restore_cursor(term, &term->grid->saved_cursor);
term->vt.attrs = term->vt.saved_attrs;
term->charsets = term->saved_charsets;
break; break;
case 't': { case 't': {

View file

@ -2254,13 +2254,25 @@ term_reset_view(struct terminal *term)
term_damage_view(term); term_damage_view(term);
} }
void
term_save_cursor(struct terminal *term)
{
term->grid->saved_cursor = term->grid->cursor;
term->vt.saved_attrs = term->vt.attrs;
term->saved_charsets = term->charsets;
}
void void
term_restore_cursor(struct terminal *term, const struct cursor *cursor) term_restore_cursor(struct terminal *term, const struct cursor *cursor)
{ {
int row = min(cursor->point.row, term->rows - 1); int row = min(cursor->point.row, term->rows - 1);
int col = min(cursor->point.col, term->cols - 1); int col = min(cursor->point.col, term->cols - 1);
term_cursor_to(term, row, col); term_cursor_to(term, row, col);
term->grid->cursor.lcf = cursor->lcf; term->grid->cursor.lcf = cursor->lcf;
term->vt.attrs = term->vt.saved_attrs;
term->charsets = term->saved_charsets;
} }
void void

View file

@ -595,6 +595,7 @@ void term_reverse_index(struct terminal *term);
void term_arm_blink_timer(struct terminal *term); void term_arm_blink_timer(struct terminal *term);
void term_save_cursor(struct terminal *term);
void term_restore_cursor(struct terminal *term, const struct cursor *cursor); void term_restore_cursor(struct terminal *term, const struct cursor *cursor);
void term_visual_focus_in(struct terminal *term); void term_visual_focus_in(struct terminal *term);

6
vt.c
View file

@ -366,15 +366,11 @@ action_esc_dispatch(struct terminal *term, uint8_t final)
case 0: case 0:
switch (final) { switch (final) {
case '7': case '7':
term->grid->saved_cursor = term->grid->cursor; term_save_cursor(term);
term->vt.saved_attrs = term->vt.attrs;
term->saved_charsets = term->charsets;
break; break;
case '8': case '8':
term_restore_cursor(term, &term->grid->saved_cursor); term_restore_cursor(term, &term->grid->saved_cursor);
term->vt.attrs = term->vt.saved_attrs;
term->charsets = term->saved_charsets;
break; break;
case 'c': case 'c':