From 7c76e907c28c5ec8a3e1ccab9d174226090b3d03 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 4 Jan 2017 08:58:49 +0530 Subject: [PATCH] When switching to alternate screen always reset cursor --- kitty/screen.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kitty/screen.c b/kitty/screen.c index de6729ca4..9a3b2b521 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -350,18 +350,21 @@ END_ALLOW_CASE_RANGE void screen_toggle_screen_buffer(Screen *self) { - screen_save_cursor(self); - if (self->linebuf == self->main_linebuf) { + bool to_alt = self->linebuf == self->main_linebuf; + if (to_alt) { linebuf_clear(self->alt_linebuf, ' '); + screen_save_cursor(self); self->linebuf = self->alt_linebuf; self->tabstops = self->alt_tabstops; + screen_cursor_position(self, 1, 1); + cursor_reset(self->cursor); } else { self->linebuf = self->main_linebuf; self->tabstops = self->main_tabstops; + screen_restore_cursor(self); } PyObject_CallMethod(self->callbacks, "buf_toggled", "O", self->linebuf == self->main_linebuf ? Py_True : Py_False); if (PyErr_Occurred()) { PyErr_Print(); PyErr_Clear(); } - screen_restore_cursor(self); tracker_update_screen(self->change_tracker); }