term: don't re-render last cursor cell if cursor was hidden

This commit is contained in:
Daniel Eklöf 2020-07-15 08:21:41 +02:00
parent 6b0b3ddccc
commit 970a42a6dd
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 3 additions and 1 deletions

View file

@ -1392,7 +1392,7 @@ grid_render(struct terminal *term)
selection_dirty_cells(term);
/* Mark old cursor cell as dirty, to force it to be re-rendered */
if (term->render.last_cursor.row != NULL) {
if (term->render.last_cursor.row != NULL && !term->render.last_cursor.hidden) {
struct row *row = term->render.last_cursor.row;
struct cell *cell = &row->cells[term->render.last_cursor.col];
cell->attrs.clean = 0;
@ -1402,6 +1402,7 @@ grid_render(struct terminal *term)
/* Remember current cursor position, for the next frame */
term->render.last_cursor.row = grid_row(term->grid, term->grid->cursor.point.row);
term->render.last_cursor.col = term->grid->cursor.point.col;
term->render.last_cursor.hidden = term->hide_cursor;
/* Mark current cursor cell as dirty, to ensure it is rendered */
if (!term->hide_cursor) {

View file

@ -381,6 +381,7 @@ struct terminal {
struct {
struct row *row;
int col;
bool hidden;
} last_cursor;
struct buffer *last_buf; /* Buffer we rendered to last time */