term: save/restore charsets on save/restore cursor+attributes

This commit is contained in:
Daniel Eklöf 2019-11-17 10:02:46 +01:00
parent 3f3feedde2
commit c9ebd527cf
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 4 additions and 6 deletions

View file

@ -828,6 +828,7 @@ term_reset(struct terminal *term, bool hard)
term->charsets.set[1] = CHARSET_ASCII; term->charsets.set[1] = CHARSET_ASCII;
term->charsets.set[2] = CHARSET_ASCII; term->charsets.set[2] = CHARSET_ASCII;
term->charsets.set[3] = CHARSET_ASCII; term->charsets.set[3] = CHARSET_ASCII;
term->saved_charsets = term->charsets;
tll_free_and_free(term->window_title_stack, free); tll_free_and_free(term->window_title_stack, free);
free(term->window_title); free(term->window_title);
term->window_title = strdup("foot"); term->window_title = strdup("foot");

View file

@ -184,6 +184,7 @@ struct terminal {
enum mouse_reporting mouse_reporting; enum mouse_reporting mouse_reporting;
struct charsets charsets; struct charsets charsets;
struct charsets saved_charsets; /* For save/restore cursor + attributes */
char *window_title; char *window_title;
tll(char *) window_title_stack; tll(char *) window_title_stack;

8
vt.c
View file

@ -597,17 +597,13 @@ esc_dispatch(struct terminal *term, uint8_t final)
case '7': case '7':
term->saved_cursor = term->cursor; term->saved_cursor = term->cursor;
term->vt.saved_attrs = term->vt.attrs; term->vt.saved_attrs = term->vt.attrs;
//term->saved_charset = term->selected_charset; term->saved_charsets = term->charsets;
//for (size_t i = 0; i < 4; i++)
// term->saved_charsets[i] = term->charset[i];
break; break;
case '8': case '8':
term_restore_cursor(term); term_restore_cursor(term);
term->vt.attrs = term->vt.saved_attrs; term->vt.attrs = term->vt.saved_attrs;
//term->selected_charset = term->saved_charset; term->charsets = term->saved_charsets;
//for (size_t i = 0; i < 4; i++)
// term->charset[i] = term->saved_charsets[i];
break; break;
case 'c': case 'c':