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[2] = CHARSET_ASCII;
term->charsets.set[3] = CHARSET_ASCII;
term->saved_charsets = term->charsets;
tll_free_and_free(term->window_title_stack, free);
free(term->window_title);
term->window_title = strdup("foot");

View file

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

8
vt.c
View file

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