mirror of
https://github.com/tmate-io/tmate.git
synced 2025-08-16 00:28:10 +02:00
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:
20
screen.c
20
screen.c
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user