aboutsummaryrefslogtreecommitdiff
path: root/screen.c
diff options
context:
space:
mode:
authorThomas Adam <thomas.adam@smoothwall.net>2013-02-07 12:08:55 +0000
committerThomas Adam <thomas.adam@smoothwall.net>2013-02-07 12:08:55 +0000
commit64da762c15ddf0930baa1f8e4fc2b41515a64e3a (patch)
treecd2a953395962c7f2e7265d16722508a80606372 /screen.c
parentfe00607816308953209cb85ab92a586c1f344cde (diff)
parent8903c1f167839569b7514508b38988aa6486575c (diff)
downloadrtmux-64da762c15ddf0930baa1f8e4fc2b41515a64e3a.tar.gz
rtmux-64da762c15ddf0930baa1f8e4fc2b41515a64e3a.tar.bz2
rtmux-64da762c15ddf0930baa1f8e4fc2b41515a64e3a.zip
Merge branch 'obsd-master'
Diffstat (limited to 'screen.c')
-rw-r--r--screen.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/screen.c b/screen.c
index 64713728..fe0b7389 100644
--- a/screen.c
+++ b/screen.c
@@ -121,7 +121,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;
@@ -141,6 +141,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
@@ -357,3 +360,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);
+}