From 93c83d03c0f96fe51b05cce436502990ba0d839b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 1 Feb 2018 09:45:34 +0530 Subject: [PATCH] More robust private mode restore --- kitty/screen.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/kitty/screen.c b/kitty/screen.c index 88b01a4df..2a697bf1a 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -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