More robust private mode restore

This commit is contained in:
Kovid Goyal 2018-02-01 09:45:34 +05:30
parent 855b3de473
commit 93c83d03c0
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -813,9 +813,13 @@ void
screen_restore_modes(Screen *self) {
ScreenModes *m;
buffer_pop(&self->modes_savepoints, m);
bool lnm = self->modes.mLNM, irm = self->modes.mIRM, sc81t = self->modes.eight_bit_controls;
self->modes = *m;
self->modes.mLNM = lnm; self->modes.mIRM = irm; self->modes.eight_bit_controls = sc81t;
if (m == NULL) *m = empty_modes;
#define S(name) set_mode_from_const(self, name, m->m##name)
S(DECTCEM); S(DECSCNM); S(DECSCNM); S(DECOM); S(DECAWM); S(DECCOLM); S(DECARM); S(DECCKM);
S(BRACKETED_PASTE); S(FOCUS_TRACKING); S(EXTENDED_KEYBOARD);
self->modes.mouse_tracking_mode = m->mouse_tracking_mode;
self->modes.mouse_tracking_protocol = m->mouse_tracking_protocol;
#undef S
}
void