From 7996267d7bb095466d8f892a5df0b3de0de3f480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 28 Aug 2025 12:11:00 +0200 Subject: [PATCH] term: cursor blink: dirty multi-cursor cells too --- terminal.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/terminal.c b/terminal.c index 8c008af2..abb7a82d 100644 --- a/terminal.c +++ b/terminal.c @@ -525,6 +525,24 @@ cursor_refresh(struct terminal *term) term->grid->cur_row->cells[term->grid->cursor.point.col].attrs.clean = 0; term->grid->cur_row->dirty = true; + + if (unlikely(term->multi_cursor.shapes != NULL)) { + int rect_count = 0; + const pixman_box32_t *boxes = pixman_region32_rectangles(&term->multi_cursor.active, &rect_count); + + for (int i = 0; i < rect_count; i++) { + const pixman_box32_t *box = &boxes[i]; + + for (int r = box->y1; r < box->y2; r++) { + struct row *row = term->grid->rows[r]; + row->dirty = true; + + for (int c = box->x1; c < box->x2; c++) + row->cells[c].attrs.clean = false; + } + } + } + render_refresh(term); }