summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/layout.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2019-07-15 18:25:08 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2019-07-15 18:25:08 +0000
commit8cadae2d543cf2a7b3c348dc21f7397603f0f06b (patch)
tree0abf61d422f17a885a5f859b2d6f6130857c6ffb /usr.bin/tmux/layout.c
parent76c8119a63f9ba02d011999c12095c2583a098c6 (diff)
Make layout_fix_offsets take a window like layout_fix_panes.
Diffstat (limited to 'usr.bin/tmux/layout.c')
-rw-r--r--usr.bin/tmux/layout.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/usr.bin/tmux/layout.c b/usr.bin/tmux/layout.c
index fc1c8ea4c44..c548b276b8d 100644
--- a/usr.bin/tmux/layout.c
+++ b/usr.bin/tmux/layout.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: layout.c,v 1.45 2019/06/26 18:44:22 nicm Exp $ */
+/* $OpenBSD: layout.c,v 1.46 2019/07/15 18:25:07 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -200,8 +200,8 @@ layout_make_node(struct layout_cell *lc, enum layout_type type)
}
/* Fix cell offsets based on their sizes. */
-void
-layout_fix_offsets(struct layout_cell *lc)
+static void
+layout_fix_offsets1(struct layout_cell *lc)
{
struct layout_cell *lcchild;
u_int xoff, yoff;
@@ -212,7 +212,7 @@ layout_fix_offsets(struct layout_cell *lc)
lcchild->xoff = xoff;
lcchild->yoff = lc->yoff;
if (lcchild->type != LAYOUT_WINDOWPANE)
- layout_fix_offsets(lcchild);
+ layout_fix_offsets1(lcchild);
xoff += lcchild->sx + 1;
}
} else {
@@ -221,12 +221,24 @@ layout_fix_offsets(struct layout_cell *lc)
lcchild->xoff = lc->xoff;
lcchild->yoff = yoff;
if (lcchild->type != LAYOUT_WINDOWPANE)
- layout_fix_offsets(lcchild);
+ layout_fix_offsets1(lcchild);
yoff += lcchild->sy + 1;
}
}
}
+/* Update cell offsets based on their sizes. */
+void
+layout_fix_offsets(struct window *w)
+{
+ struct layout_cell *lc = w->layout_root;
+
+ lc->xoff = 0;
+ lc->yoff = 0;
+
+ layout_fix_offsets1(lc);
+}
+
/*
* Returns 1 if we need to reserve space for the pane status line. This is the
* case for the most upper panes only.
@@ -507,7 +519,7 @@ layout_resize(struct window *w, u_int sx, u_int sy)
layout_resize_adjust(w, lc, LAYOUT_TOPBOTTOM, ychange);
/* Fix cell offsets. */
- layout_fix_offsets(lc);
+ layout_fix_offsets(w);
layout_fix_panes(w);
}
@@ -567,7 +579,7 @@ layout_resize_layout(struct window *w, struct layout_cell *lc,
}
/* Fix cell offsets. */
- layout_fix_offsets(w->layout_root);
+ layout_fix_offsets(w);
layout_fix_panes(w);
notify_window("window-layout-changed", w);
}
@@ -988,7 +1000,7 @@ layout_split_pane(struct window_pane *wp, enum layout_type type, int size,
if (full_size) {
if (!resize_first)
layout_resize_child_cells(wp->window, lc);
- layout_fix_offsets(wp->window->layout_root);
+ layout_fix_offsets(wp->window);
} else
layout_make_leaf(lc, wp);
@@ -1006,7 +1018,7 @@ layout_close_pane(struct window_pane *wp)
/* Fix pane offsets and sizes. */
if (w->layout_root != NULL) {
- layout_fix_offsets(w->layout_root);
+ layout_fix_offsets(w);
layout_fix_panes(w);
}
notify_window("window-layout-changed", w);
@@ -1073,7 +1085,7 @@ layout_spread_out(struct window_pane *wp)
do {
if (layout_spread_cell(w, parent)) {
- layout_fix_offsets(parent);
+ layout_fix_offsets(w);
layout_fix_panes(w);
break;
}