mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-07 04:06:07 -05:00
grid: don’t cut multi-column chars in half when resizing the alt screen
When we resize the alt screen, we don’t reflow the text, we simply truncate all the lines. When doing this, make sure we don’t truncate in the middle of a multi-column character.
This commit is contained in:
parent
363aeea2df
commit
b7709cc013
2 changed files with 7 additions and 1 deletions
|
|
@ -149,6 +149,8 @@
|
|||
(https://codeberg.org/dnkl/foot/issues/565).
|
||||
* Off-by-one error in markup of auto-detected URLs when the URL ends
|
||||
in the right-most column.
|
||||
* Multi-column characters being cut in half when resizing the
|
||||
alternate screen.
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
|||
6
grid.c
6
grid.c
|
|
@ -194,11 +194,15 @@ grid_resize_without_reflow(
|
|||
new_row->dirty = old_row->dirty;
|
||||
new_row->linebreak = false;
|
||||
|
||||
/* Clear "new" columns */
|
||||
if (new_cols > old_cols) {
|
||||
/* Clear "new" columns */
|
||||
memset(&new_row->cells[old_cols], 0,
|
||||
sizeof(struct cell) * (new_cols - old_cols));
|
||||
new_row->dirty = true;
|
||||
} else if (old_cols > new_cols) {
|
||||
/* Make sure we don't cut a multi-column character in two */
|
||||
for (int i = new_cols; i > 0 && old_row->cells[i].wc > CELL_SPACER; i--)
|
||||
new_row->cells[i - 1].wc = 0;
|
||||
}
|
||||
|
||||
/* Map sixels on current "old" row to current "new row" */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue