From 970a42a6dd10b6b6227d67e3bc9d7a66ba84f34b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Wed, 15 Jul 2020 08:21:41 +0200 Subject: [PATCH] term: don't re-render last cursor cell if cursor was hidden --- render.c | 3 ++- terminal.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/render.c b/render.c index a049ca05..b71325f6 100644 --- a/render.c +++ b/render.c @@ -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) { diff --git a/terminal.h b/terminal.h index 68259160..4d5f717b 100644 --- a/terminal.h +++ b/terminal.h @@ -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 */