mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-07 04:06:07 -05:00
parent
70f1274171
commit
a0d1d2f1c8
2 changed files with 12 additions and 1 deletions
|
|
@ -27,6 +27,8 @@
|
|||
(https://codeberg.org/dnkl/foot/issues/146).
|
||||
* Color flashes when changing the color palette with OSC 4,10,11
|
||||
(https://codeberg.org/dnkl/foot/issues/141).
|
||||
* Scrollback position is now retained when resizing the window
|
||||
(https://codeberg.org/dnkl/foot/issues/142).
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
|||
11
grid.c
11
grid.c
|
|
@ -65,6 +65,9 @@ grid_reflow(struct grid *grid, int new_rows, int new_cols,
|
|||
const int old_rows = grid->num_rows;
|
||||
const int old_cols = grid->num_cols;
|
||||
|
||||
/* Is viewpoint tracking current grid offset? */
|
||||
const bool view_follows = grid->view == grid->offset;
|
||||
|
||||
int new_col_idx = 0;
|
||||
int new_row_idx = 0;
|
||||
|
||||
|
|
@ -97,9 +100,14 @@ grid_reflow(struct grid *grid, int new_rows, int new_cols,
|
|||
tll_push_back(tracking_points, &cursor);
|
||||
tll_push_back(tracking_points, &saved_cursor);
|
||||
|
||||
struct coord viewport = {0, grid->view};
|
||||
if (!view_follows)
|
||||
tll_push_back(tracking_points, &viewport);
|
||||
|
||||
for (size_t i = 0; i < tracking_points_count; i++)
|
||||
tll_push_back(tracking_points, _tracking_points[i]);
|
||||
|
||||
|
||||
/*
|
||||
* Walk the old grid
|
||||
*/
|
||||
|
|
@ -308,7 +316,8 @@ grid_reflow(struct grid *grid, int new_rows, int new_cols,
|
|||
grid->offset += new_rows;
|
||||
while (new_grid[grid->offset] == NULL)
|
||||
grid->offset = (grid->offset + 1) & (new_rows - 1);
|
||||
grid->view = grid->offset;
|
||||
|
||||
grid->view = view_follows ? grid->offset : viewport.row;
|
||||
|
||||
/* Ensure all visible rows have been allocated */
|
||||
for (int r = 0; r < new_screen_rows; r++) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue