mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-03 01:40:17 -05:00
osc: extend damage-cells-by-color to default fg/bg as well
When changing part of the color palette, through either OSC-4, or OSC-10 and OSC-11 (and the corresponding reset OSCs: 104, 110 and 111), only dirty affected cells. We've always done this, but only for OSC-4. This patch breaks out that logic, and extends it to handle default fg/bg too. It also fixes a bug where cells with colored underlines were not dirtied if the underline was the only part of the cell that was affected by a OSC-4 change.
This commit is contained in:
parent
e5ed387426
commit
22c8637610
4 changed files with 102 additions and 51 deletions
6
csi.c
6
csi.c
|
|
@ -2098,8 +2098,10 @@ csi_dispatch(struct terminal *term, uint8_t final)
|
|||
sizeof(term->colors));
|
||||
term->color_stack.idx = slot - 1;
|
||||
|
||||
/* TODO: we _could_ iterate all cells and only dirty
|
||||
those that are affected by the palette change... */
|
||||
/* Assume a full palette switch *will* affect almost
|
||||
all cells. The alternative is to call
|
||||
term_damage_color() for all 256 palette entries
|
||||
*and* the default fg/bg (256 + 2 calls in total) */
|
||||
term_damage_view(term);
|
||||
term_damage_margins(term);
|
||||
} else if (slot == 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue