summaryrefslogtreecommitdiffstats
path: root/layout-set.c
diff options
context:
space:
mode:
authornicm <nicm>2019-04-26 10:15:40 +0000
committernicm <nicm>2019-04-26 10:15:40 +0000
commit6644d209d29c802c6115137cc74e4e57b76dd3e1 (patch)
tree675090830f8aba7a4773b684c433527ae2e3d58e /layout-set.c
parent2d65bbd94129c4542394a83151cb1a131c3c7871 (diff)
Unbreak main-vertical and main-horizontal layouts.
Diffstat (limited to 'layout-set.c')
-rw-r--r--layout-set.c66
1 files changed, 39 insertions, 27 deletions
diff --git a/layout-set.c b/layout-set.c
index 504d9630..3a088a4c 100644
--- a/layout-set.c
+++ b/layout-set.c
@@ -213,7 +213,7 @@ layout_set_main_h(struct window *w)
mainh = w->sy - otherh;
}
- /* Work out what height is needed. */
+ /* Work out what width is needed. */
sx = (n * (PANE_MINIMUM + 1)) - 1;
if (sx < w->sx)
sx = w->sx;
@@ -221,7 +221,7 @@ layout_set_main_h(struct window *w)
/* Free old tree and create a new root. */
layout_free(w);
lc = w->layout_root = layout_create_cell(NULL);
- layout_set_size(lc, sx, mainh + otherh + 1, 0, 0);
+ layout_set_size(lc, sx, mainh + otherh, 0, 0);
layout_make_node(lc, LAYOUT_TOPBOTTOM);
/* Create the main pane. */
@@ -233,19 +233,25 @@ layout_set_main_h(struct window *w)
/* Create the other pane. */
lcother = layout_create_cell(lc);
layout_set_size(lcother, sx, otherh, 0, 0);
- layout_make_node(lcother, LAYOUT_LEFTRIGHT);
- TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
-
- /* Add the remaining panes as children. */
- TAILQ_FOREACH(wp, &w->panes, entry) {
- if (wp == TAILQ_FIRST(&w->panes))
- continue;
- lcchild = layout_create_cell(lc);
- layout_set_size(lcchild, PANE_MINIMUM, otherh, 0, 0);
- layout_make_leaf(lcchild, wp);
- TAILQ_INSERT_TAIL(&lcother->cells, lcchild, entry);
+ if (n == 1) {
+ wp = TAILQ_NEXT(TAILQ_FIRST(&w->panes), entry);
+ layout_make_leaf(lcother, wp);
+ TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
+ } else {
+ layout_make_node(lcother, LAYOUT_LEFTRIGHT);
+ TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
+
+ /* Add the remaining panes as children. */
+ TAILQ_FOREACH(wp, &w->panes, entry) {
+ if (wp == TAILQ_FIRST(&w->panes))
+ continue;
+ lcchild = layout_create_cell(lcother);
+ layout_set_size(lcchild, PANE_MINIMUM, otherh, 0, 0);
+ layout_make_leaf(lcchild, wp);
+ TAILQ_INSERT_TAIL(&lcother->cells, lcchild, entry);
+ }
+ layout_spread_cell(w, lcother);
}
- layout_spread_cell(w, lcother);
/* Fix cell offsets. */
layout_fix_offsets(lc);
@@ -299,7 +305,7 @@ layout_set_main_v(struct window *w)
/* Free old tree and create a new root. */
layout_free(w);
lc = w->layout_root = layout_create_cell(NULL);
- layout_set_size(lc, mainw + otherw + 1, sy, 0, 0);
+ layout_set_size(lc, mainw + otherw, sy, 0, 0);
layout_make_node(lc, LAYOUT_LEFTRIGHT);
/* Create the main pane. */
@@ -311,19 +317,25 @@ layout_set_main_v(struct window *w)
/* Create the other pane. */
lcother = layout_create_cell(lc);
layout_set_size(lcother, otherw, sy, 0, 0);
- layout_make_node(lcother, LAYOUT_TOPBOTTOM);
- TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
-
- /* Add the remaining panes as children. */
- TAILQ_FOREACH(wp, &w->panes, entry) {
- if (wp == TAILQ_FIRST(&w->panes))
- continue;
- lcchild = layout_create_cell(lc);
- layout_set_size(lcchild, otherw, PANE_MINIMUM, 0, 0);
- layout_make_leaf(lcchild, wp);
- TAILQ_INSERT_TAIL(&lcother->cells, lcchild, entry);
+ if (n == 1) {
+ wp = TAILQ_NEXT(TAILQ_FIRST(&w->panes), entry);
+ layout_make_leaf(lcother, wp);
+ TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
+ } else {
+ layout_make_node(lcother, LAYOUT_TOPBOTTOM);
+ TAILQ_INSERT_TAIL(&lc->cells, lcother, entry);
+
+ /* Add the remaining panes as children. */
+ TAILQ_FOREACH(wp, &w->panes, entry) {
+ if (wp == TAILQ_FIRST(&w->panes))
+ continue;
+ lcchild = layout_create_cell(lcother);
+ layout_set_size(lcchild, otherw, PANE_MINIMUM, 0, 0);
+ layout_make_leaf(lcchild, wp);
+ TAILQ_INSERT_TAIL(&lcother->cells, lcchild, entry);
+ }
+ layout_spread_cell(w, lcother);
}
- layout_spread_cell(w, lcother);
/* Fix cell offsets. */
layout_fix_offsets(lc);