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.
This commit is contained in:
Tiago Cunha 2010-12-22 15:23:59 +00:00
parent cd92f44686
commit d1bdc9a161
4 changed files with 51 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $Id: cmd-set-option.c,v 1.101 2010-12-06 22:52:20 nicm Exp $ */ /* $Id: cmd-set-option.c,v 1.102 2010-12-22 15:23:59 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -159,6 +159,8 @@ const struct set_option_entry set_window_option_table[] = {
{ "monitor-activity", SET_OPTION_FLAG, 0, 0, NULL }, { "monitor-activity", SET_OPTION_FLAG, 0, 0, NULL },
{ "monitor-content", SET_OPTION_STRING, 0, 0, NULL }, { "monitor-content", SET_OPTION_STRING, 0, 0, NULL },
{ "monitor-silence",SET_OPTION_NUMBER, 0, INT_MAX, NULL}, { "monitor-silence",SET_OPTION_NUMBER, 0, INT_MAX, NULL},
{ "other-pane-height", SET_OPTION_NUMBER, 0, INT_MAX, NULL },
{ "other-pane-width", SET_OPTION_NUMBER, 0, INT_MAX, NULL },
{ "remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL }, { "remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL },
{ "synchronize-panes", SET_OPTION_FLAG, 0, 0, NULL }, { "synchronize-panes", SET_OPTION_FLAG, 0, 0, NULL },
{ "utf8", SET_OPTION_FLAG, 0, 0, NULL }, { "utf8", SET_OPTION_FLAG, 0, 0, NULL },

View File

@ -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> * 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 window_pane *wp;
struct layout_cell *lc, *lcmain, *lcrow, *lcchild; struct layout_cell *lc, *lcmain, *lcrow, *lcchild;
u_int n, mainheight, width, height, used; u_int n, mainheight, otherheight, width, height;
u_int i, j, columns, rows, totalrows; u_int used, i, j, columns, rows, totalrows;
layout_print_cell(w->layout_root, __func__, 1); 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. */ /* Get the main pane height and add one for separator line. */
mainheight = options_get_number(&w->options, "main-pane-height") + 1; 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) if (mainheight < PANE_MINIMUM + 1)
mainheight = PANE_MINIMUM + 1; mainheight = PANE_MINIMUM + 1;
@ -342,8 +352,8 @@ layout_set_main_v(struct window *w)
{ {
struct window_pane *wp; struct window_pane *wp;
struct layout_cell *lc, *lcmain, *lccolumn, *lcchild; struct layout_cell *lc, *lcmain, *lccolumn, *lcchild;
u_int n, mainwidth, width, height, used; u_int n, mainwidth, otherwidth, width, height;
u_int i, j, columns, rows, totalcolumns; u_int used, i, j, columns, rows, totalcolumns;
layout_print_cell(w->layout_root, __func__, 1); 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. */ /* Get the main pane width and add one for separator line. */
mainwidth = options_get_number(&w->options, "main-pane-width") + 1; 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) if (mainwidth < PANE_MINIMUM + 1)
mainwidth = PANE_MINIMUM + 1; mainwidth = PANE_MINIMUM + 1;

21
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.277 2010-12-11 18:42:20 nicm Exp $ .\" $Id: tmux.1,v 1.278 2010-12-22 15:23:59 tcunha Exp $
.\" .\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\" .\"
@ -2199,6 +2199,25 @@ Windows that have been silent for the interval are highlighted in the
status line. status line.
An interval of zero disables the monitoring. An interval of zero disables the monitoring.
.Pp .Pp
.It Ic other-pane-height Ar height
Set the height of the other panes (not the main pane) in the
.Ic main-horizontal
layout.
If this option is set to 0 (the default), it will have no effect.
If both the
.Ic main-pane-height
and
.Ic other-pane-height
options are set, the main pane will grow taller to make the other panes the
specified height, but will never shrink to do so.
.Pp
.It Ic other-pane-width Ar width
Like
.Ic other-pane-height ,
but set the width of other panes in the
.Ic main-vertical
layout.
.Pp
.It Xo Ic remain-on-exit .It Xo Ic remain-on-exit
.Op Ic on | off .Op Ic on | off
.Xc .Xc

4
tmux.c
View File

@ -1,4 +1,4 @@
/* $Id: tmux.c,v 1.226 2010-12-10 21:19:13 nicm Exp $ */ /* $Id: tmux.c,v 1.227 2010-12-22 15:23:59 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -410,6 +410,8 @@ main(int argc, char **argv)
options_set_number(wo, "monitor-activity", 0); options_set_number(wo, "monitor-activity", 0);
options_set_string(wo, "monitor-content", "%s", ""); options_set_string(wo, "monitor-content", "%s", "");
options_set_number(wo, "monitor-silence", 0); options_set_number(wo, "monitor-silence", 0);
options_set_number(wo, "other-pane-height", 0);
options_set_number(wo, "other-pane-width", 0);
options_set_number(wo, "window-status-attr", 0); options_set_number(wo, "window-status-attr", 0);
options_set_number(wo, "window-status-bg", 8); options_set_number(wo, "window-status-bg", 8);
options_set_number(wo, "window-status-current-attr", 0); options_set_number(wo, "window-status-current-attr", 0);