grid: reflow: require col count > 0 when skipping line truncation

When reflowing the grid, we truncate lines with a hard linebreak after
the last non-empty cell. This way we don’t reflow trailing empty cells
to a new line when resizing the window to a smaller size.

However, “logical” lines (i.e. those without a hard linebreak)
are *not* truncated. This is to ensure we don’t trim empty cells in
the middle of a logical line spanning multiple physical lines.

Since newly allocated rows are initialized with linebreak=false, we
need to ensure _those_ are still truncated - otherwise all that empty
space under the current prompt will be reflowed.

Note that this is a temporary workaround. The correct solution, I
think, is to track whether a line has been printed to or not, and
simply ignore (not reflow) lines that haven’t yet been touched.
This commit is contained in:
Daniel Eklöf 2022-06-30 19:47:18 +02:00
parent 37f094280b
commit 0c60bb3f29
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

2
grid.c
View file

@ -740,7 +740,7 @@ grid_resize_and_reflow(
}
}
if (!old_row->linebreak /*&& col_count > 0*/) {
if (!old_row->linebreak && col_count > 0) {
/* Dont truncate logical lines */
col_count = old_cols;
}