diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b63bdc8..8a090062 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -110,10 +110,13 @@ * Combining characters (including emojis consisting of multiple codepoints) not being handled correctly when _insert mode_ is enabled ([#1947][1947]). +* Reflow of the cursor (active + saved) when at the end of the line + with a pending wrap (LCF set) ([#1954][1954]). [1918]: https://codeberg.org/dnkl/foot/issues/1918 [1929]: https://codeberg.org/dnkl/foot/issues/1929 [1947]: https://codeberg.org/dnkl/foot/issues/1947 +[1954]: https://codeberg.org/dnkl/foot/issues/1954 ### Security diff --git a/grid.c b/grid.c index ceaeb230..2deb9111 100644 --- a/grid.c +++ b/grid.c @@ -1211,15 +1211,26 @@ grid_resize_and_reflow( saved_cursor.row = min(saved_cursor.row, new_screen_rows - 1); saved_cursor.col = min(saved_cursor.col, new_cols - 1); + if (grid->cursor.lcf) { + if (cursor.col + 1 < new_cols) { + cursor.col++; + grid->cursor.lcf = false; + } + } + + if (grid->saved_cursor.lcf) { + if (saved_cursor.col + 1 < new_cols) { + saved_cursor.col++; + grid->saved_cursor.lcf = false; + } + } + grid->cur_row = new_grid[(grid->offset + cursor.row) & (new_rows - 1)]; xassert(grid->cur_row != NULL); grid->cursor.point = cursor; grid->saved_cursor.point = saved_cursor; - grid->cursor.lcf = false; - grid->saved_cursor.lcf = false; - /* Free sixels we failed to "map" to the new grid */ tll_foreach(untranslated_sixels, it) sixel_destroy(&it->item);