diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-01-21 19:38:51 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-01-21 19:38:51 +0000 |
commit | 19987feaaab86e19533ca59a8ae0ff535f23db75 (patch) | |
tree | 4e386aea2c2f5f3b2f8c36bbb559f62e6a1398d2 /window.c | |
parent | 7118baa340a2679425ad334bc3fd4177a8e8f652 (diff) | |
download | rtmux-19987feaaab86e19533ca59a8ae0ff535f23db75.tar.gz rtmux-19987feaaab86e19533ca59a8ae0ff535f23db75.tar.bz2 rtmux-19987feaaab86e19533ca59a8ae0ff535f23db75.zip |
Bring back -p and -l to splitw to specify height as % or nlines.
Diffstat (limited to 'window.c')
-rw-r--r-- | window.c | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -1,4 +1,4 @@ -/* $Id: window.c,v 1.60 2009-01-20 19:35:03 nicm Exp $ */ +/* $Id: window.c,v 1.61 2009-01-21 19:38:51 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -228,7 +228,7 @@ window_create(const char *name, const char *cmd, ARRAY_ADD(&windows, w); w->references = 0; - if (window_add_pane(w, cmd, cwd, envp, hlimit) == NULL) { + if (window_add_pane(w, -1, cmd, cwd, envp, hlimit) == NULL) { window_destroy(w); return (NULL); } @@ -378,19 +378,28 @@ window_set_active_pane(struct window *w, struct window_pane *wp) } struct window_pane * -window_add_pane(struct window *w, +window_add_pane(struct window *w, int wanty, const char *cmd, const char *cwd, const char **envp, u_int hlimit) { struct window_pane *wp; - u_int wanty; + u_int sizey; if (TAILQ_EMPTY(&w->panes)) wanty = w->sy; else { - if (w->active->sy < PANE_MINIMUM * 2) + sizey = w->active->sy - 1; /* for separator */ + if (sizey < PANE_MINIMUM * 2) return (NULL); - wanty = (w->active->sy / 2 + w->active->sy % 2) - 1; - window_pane_resize(w->active, w->sx, w->active->sy / 2); + + if (wanty == -1) + wanty = sizey / 2; + + if (wanty < PANE_MINIMUM) + wanty = PANE_MINIMUM; + if ((u_int) wanty > sizey - PANE_MINIMUM) + wanty = sizey - PANE_MINIMUM; + + window_pane_resize(w->active, w->sx, sizey - wanty); } wp = window_pane_create(w, w->sx, wanty, hlimit); |