diff options
Diffstat (limited to 'screen.c')
-rw-r--r-- | screen.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -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); +} |