sixel: improve handling of images when reflowing the grids

Update the sixels' 'row' attribute when re-flowing a grid, to ensure
it is rendered at the correct place.

This should work in most cases, but will break when the cell size has
changed (e.g. font size increase/decrease, or a DPI change).

This patch also moves the sixel image list from the terminal struct
into the grid struct. The sixels are per-grid after all.
This commit is contained in:
Daniel Eklöf 2020-03-13 18:44:23 +01:00
parent 62a5805d4b
commit d482bf0a30
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 69 additions and 42 deletions

8
csi.c
View file

@ -1143,11 +1143,9 @@ csi_dispatch(struct terminal *term, uint8_t final)
tll_free(term->alt.scroll_damage);
/* Delete all sixel images on the alt screen */
tll_foreach(term->sixel_images, it) {
if (it->item.grid == &term->alt) {
sixel_destroy(&it->item);
tll_remove(term->sixel_images, it);
}
tll_foreach(term->alt.sixel_images, it) {
sixel_destroy(&it->item);
tll_remove(term->alt.sixel_images, it);
}
term_damage_all(term);