summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/window.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2017-02-27 13:07:58 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2017-02-27 13:07:58 +0000
commitfaf7d231fd1ecbdd502a75ef1afdc4bfcf38e456 (patch)
treeaa6327a57e12ee93e58b65916eaed6345706fbe7 /usr.bin/tmux/window.c
parent2c21295833ec87319865148e142b72fd8ac66fc9 (diff)
If splitw -b is used, insert the new pane before the current one in the
pane list. This means the numbering is in order (for example for display-panes) and fixes a problem with redrawing the active pane borders.
Diffstat (limited to 'usr.bin/tmux/window.c')
-rw-r--r--usr.bin/tmux/window.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/usr.bin/tmux/window.c b/usr.bin/tmux/window.c
index db964de482c..b9b14d4aa02 100644
--- a/usr.bin/tmux/window.c
+++ b/usr.bin/tmux/window.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window.c,v 1.184 2017/02/22 09:01:32 nicm Exp $ */
+/* $OpenBSD: window.c,v 1.185 2017/02/27 13:07:57 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -339,7 +339,7 @@ window_create_spawn(const char *name, int argc, char **argv, const char *path,
struct window_pane *wp;
w = window_create(sx, sy);
- wp = window_add_pane(w, NULL, hlimit);
+ wp = window_add_pane(w, NULL, 0, hlimit);
layout_init(w, wp);
if (window_pane_spawn(wp, argc, argv, path, shell, cwd,
@@ -426,6 +426,7 @@ window_has_pane(struct window *w, struct window_pane *wp)
int
window_set_active_pane(struct window *w, struct window_pane *wp)
{
+ log_debug("%s: pane %%%u (was %%%u)", __func__, wp->id, w->active->id);
if (wp == w->active)
return (0);
w->last = w->active;
@@ -578,19 +579,21 @@ window_unzoom(struct window *w)
}
struct window_pane *
-window_add_pane(struct window *w, struct window_pane *after, u_int hlimit)
+window_add_pane(struct window *w, struct window_pane *other, int before,
+ u_int hlimit)
{
struct window_pane *wp;
+ if (other == NULL)
+ other = w->active;
+
wp = window_pane_create(w, w->sx, w->sy, hlimit);
if (TAILQ_EMPTY(&w->panes))
TAILQ_INSERT_HEAD(&w->panes, wp, entry);
- else {
- if (after == NULL)
- TAILQ_INSERT_AFTER(&w->panes, w->active, wp, entry);
- else
- TAILQ_INSERT_AFTER(&w->panes, after, wp, entry);
- }
+ else if (before)
+ TAILQ_INSERT_BEFORE(other, wp, entry);
+ else
+ TAILQ_INSERT_AFTER(&w->panes, other, wp, entry);
return (wp);
}