mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-05 01:40:41 -05:00
selection: update: don't dirty cells that don't change state
Previously when updating a selection, we would unmark *all* cells in the old selection, and then mark all cells in the new selection. This caused *all* cells to be dirtied and thus re-rendered. Avoid this, by adding a temporary state to the cells' selected state. Before unmarking the old selection, pre-mark the new selection using a temporary state. When unmarking the old selection, ignore cells in this temporary state. When marking the new selection, ignore cells in this temporary state (except clearing the temporary state).
This commit is contained in:
parent
6833abf33c
commit
457eb573c4
3 changed files with 51 additions and 22 deletions
2
render.c
2
render.c
|
|
@ -385,7 +385,7 @@ render_cell(struct terminal *term, pixman_image_t *pix,
|
|||
int x = term->x_margin + col * width;
|
||||
int y = term->y_margin + row * height;
|
||||
|
||||
//bool is_selected = coord_is_selected(term, col, row);
|
||||
assert(cell->attrs.selected == 0 || cell->attrs.selected == 1);
|
||||
bool is_selected = cell->attrs.selected;
|
||||
|
||||
uint32_t _fg = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue