Automatically reflow wrapped lines when a pane is resized, requested by

many over the years and finally implemented by Richard Woodbury.
This commit is contained in:
Nicholas Marriott
2013-02-05 11:08:59 +00:00
parent a5521597b0
commit 8903c1f167
7 changed files with 71 additions and 10 deletions

View File

@ -120,7 +120,7 @@ screen_set_title(struct screen *s, const char *title)
/* Resize screen. */
void
screen_resize(struct screen *s, u_int sx, u_int sy)
screen_resize(struct screen *s, u_int sx, u_int sy, int reflow)
{
if (sx < 1)
sx = 1;
@ -140,6 +140,9 @@ screen_resize(struct screen *s, u_int sx, u_int sy)
if (sy != screen_size_y(s))
screen_resize_y(s, sy);
if (reflow)
screen_reflow(s, sx);
}
void
@ -356,3 +359,18 @@ screen_check_selection(struct screen *s, u_int px, u_int py)
return (1);
}
/* Reflow wrapped lines. */
void
screen_reflow(struct screen *s, u_int sx)
{
struct grid *old, *new;
old = s->grid;
new = grid_create(old->sx, old->sy, old->hlimit);
s->cy -= grid_reflow(new, old, sx);
s->grid = new;
grid_destroy(old);
}