summaryrefslogtreecommitdiffstats
path: root/layout-set.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2010-12-22 15:23:59 +0000
committerTiago Cunha <tcunha@gmx.com>2010-12-22 15:23:59 +0000
commitd1bdc9a1614166aa8bee5163378d299a35c75a76 (patch)
tree6896b85327a90e0b5aabffad98ccf4377371fdfe /layout-set.c
parentcd92f44686b165ea77d13b1b93b2ff80eadfe53f (diff)
Sync OpenBSD patchset 799:
Add other-pane-height and other-pane-width options, allowing the width or height of the smaller panes in the main-horizontal and main-vertical layouts to be set. Mostly from David Goodlad.
Diffstat (limited to 'layout-set.c')
-rw-r--r--layout-set.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/layout-set.c b/layout-set.c
index afd94cef..1a155db8 100644
--- a/layout-set.c
+++ b/layout-set.c
@@ -1,4 +1,4 @@
-/* $Id: layout-set.c,v 1.7 2010-12-07 20:23:21 micahcowan Exp $ */
+/* $Id: layout-set.c,v 1.8 2010-12-22 15:23:59 tcunha Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -231,8 +231,8 @@ layout_set_main_h(struct window *w)
{
struct window_pane *wp;
struct layout_cell *lc, *lcmain, *lcrow, *lcchild;
- u_int n, mainheight, width, height, used;
- u_int i, j, columns, rows, totalrows;
+ u_int n, mainheight, otherheight, width, height;
+ u_int used, i, j, columns, rows, totalrows;
layout_print_cell(w->layout_root, __func__, 1);
@@ -252,6 +252,16 @@ layout_set_main_h(struct window *w)
/* Get the main pane height and add one for separator line. */
mainheight = options_get_number(&w->options, "main-pane-height") + 1;
+
+ /* Get the optional other pane height and add one for separator line. */
+ otherheight = options_get_number(&w->options, "other-pane-height") + 1;
+
+ /*
+ * If an other pane height was specified, honour it so long as it
+ * doesn't shrink the main height to less than the main-pane-height
+ */
+ if (otherheight > 1 && w->sx - otherheight > mainheight)
+ mainheight = w->sx - otherheight;
if (mainheight < PANE_MINIMUM + 1)
mainheight = PANE_MINIMUM + 1;
@@ -342,8 +352,8 @@ layout_set_main_v(struct window *w)
{
struct window_pane *wp;
struct layout_cell *lc, *lcmain, *lccolumn, *lcchild;
- u_int n, mainwidth, width, height, used;
- u_int i, j, columns, rows, totalcolumns;
+ u_int n, mainwidth, otherwidth, width, height;
+ u_int used, i, j, columns, rows, totalcolumns;
layout_print_cell(w->layout_root, __func__, 1);
@@ -363,6 +373,16 @@ layout_set_main_v(struct window *w)
/* Get the main pane width and add one for separator line. */
mainwidth = options_get_number(&w->options, "main-pane-width") + 1;
+
+ /* Get the optional other pane width and add one for separator line. */
+ otherwidth = options_get_number(&w->options, "other-pane-width") + 1;
+
+ /*
+ * If an other pane width was specified, honour it so long as it
+ * doesn't shrink the main width to less than the main-pane-width
+ */
+ if (otherwidth > 1 && w->sx - otherwidth > mainwidth)
+ mainwidth = w->sx - otherwidth;
if (mainwidth < PANE_MINIMUM + 1)
mainwidth = PANE_MINIMUM + 1;