diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-02-27 14:01:20 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-02-27 14:01:20 +0000 |
commit | 48a3dba6b9863abea9db47a2004009cb6cd68332 (patch) | |
tree | 05fb72d6d1bfc164620f5a4c5cb7be1a1a6c69cc /window.c | |
parent | 2fa16eee538ba13148c75c6852876d5ab024ba00 (diff) | |
parent | e741a0bcd7775fab1db822ea6707cd32b0ea9799 (diff) | |
download | rtmux-48a3dba6b9863abea9db47a2004009cb6cd68332.tar.gz rtmux-48a3dba6b9863abea9db47a2004009cb6cd68332.tar.bz2 rtmux-48a3dba6b9863abea9db47a2004009cb6cd68332.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'window.c')
-rw-r--r-- | window.c | 19 |
1 files changed, 11 insertions, 8 deletions
@@ -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); } |