From 19987feaaab86e19533ca59a8ae0ff535f23db75 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 21 Jan 2009 19:38:51 +0000 Subject: Bring back -p and -l to splitw to specify height as % or nlines. --- window.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index 154f908f..f9c2870e 100644 --- a/window.c +++ b/window.c @@ -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 @@ -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); -- cgit