When switching to alternate screen always reset cursor
This commit is contained in:
parent
4ccb05d3d3
commit
7c76e907c2
@ -350,18 +350,21 @@ END_ALLOW_CASE_RANGE
|
|||||||
|
|
||||||
void
|
void
|
||||||
screen_toggle_screen_buffer(Screen *self) {
|
screen_toggle_screen_buffer(Screen *self) {
|
||||||
screen_save_cursor(self);
|
bool to_alt = self->linebuf == self->main_linebuf;
|
||||||
if (self->linebuf == self->main_linebuf) {
|
if (to_alt) {
|
||||||
linebuf_clear(self->alt_linebuf, ' ');
|
linebuf_clear(self->alt_linebuf, ' ');
|
||||||
|
screen_save_cursor(self);
|
||||||
self->linebuf = self->alt_linebuf;
|
self->linebuf = self->alt_linebuf;
|
||||||
self->tabstops = self->alt_tabstops;
|
self->tabstops = self->alt_tabstops;
|
||||||
|
screen_cursor_position(self, 1, 1);
|
||||||
|
cursor_reset(self->cursor);
|
||||||
} else {
|
} else {
|
||||||
self->linebuf = self->main_linebuf;
|
self->linebuf = self->main_linebuf;
|
||||||
self->tabstops = self->main_tabstops;
|
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);
|
PyObject_CallMethod(self->callbacks, "buf_toggled", "O", self->linebuf == self->main_linebuf ? Py_True : Py_False);
|
||||||
if (PyErr_Occurred()) { PyErr_Print(); PyErr_Clear(); }
|
if (PyErr_Occurred()) { PyErr_Print(); PyErr_Clear(); }
|
||||||
screen_restore_cursor(self);
|
|
||||||
tracker_update_screen(self->change_tracker);
|
tracker_update_screen(self->change_tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user