aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicm <nicm>2016-06-06 07:24:31 +0000
committernicm <nicm>2016-06-06 07:24:31 +0000
commit00cf5fbde6d846a10804447204dd55e8c3a68dbd (patch)
tree4632d8517797199b8433dcf91c548a289f62b7c4
parent3c10df4f87490ecdc9d9a8ca443e57e8b96abbe9 (diff)
downloadrtmux-00cf5fbde6d846a10804447204dd55e8c3a68dbd.tar.gz
rtmux-00cf5fbde6d846a10804447204dd55e8c3a68dbd.tar.bz2
rtmux-00cf5fbde6d846a10804447204dd55e8c3a68dbd.zip
Insert new panes after the pane being split in the list rather than
always after the active pane. This is more sensible when doing it with commands rather than keys.
-rw-r--r--cmd-split-window.c2
-rw-r--r--tmux.h3
-rw-r--r--window.c12
3 files changed, 11 insertions, 6 deletions
diff --git a/cmd-split-window.c b/cmd-split-window.c
index 8382d78e..de6827a7 100644
--- a/cmd-split-window.c
+++ b/cmd-split-window.c
@@ -136,7 +136,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq)
cause = xstrdup("pane too small");
goto error;
}
- new_wp = window_add_pane(w, hlimit);
+ new_wp = window_add_pane(w, wp, hlimit);
layout_assign_pane(lc, new_wp);
path = NULL;
diff --git a/tmux.h b/tmux.h
index fddddca3..5422c8eb 100644
--- a/tmux.h
+++ b/tmux.h
@@ -2130,7 +2130,8 @@ int window_has_pane(struct window *, struct window_pane *);
int window_set_active_pane(struct window *, struct window_pane *);
void window_redraw_active_switch(struct window *,
struct window_pane *);
-struct window_pane *window_add_pane(struct window *, u_int);
+struct window_pane *window_add_pane(struct window *, struct window_pane *,
+ u_int);
void window_resize(struct window *, u_int, u_int);
int window_zoom(struct window_pane *);
int window_unzoom(struct window *);
diff --git a/window.c b/window.c
index 9870fbd5..a252629d 100644
--- a/window.c
+++ b/window.c
@@ -323,7 +323,7 @@ window_create(const char *name, int argc, char **argv, const char *path,
struct window_pane *wp;
w = window_create1(sx, sy);
- wp = window_add_pane(w, hlimit);
+ wp = window_add_pane(w, NULL, hlimit);
layout_init(w, wp);
if (window_pane_spawn(wp, argc, argv, path, shell, cwd, env, tio,
@@ -553,15 +553,19 @@ window_unzoom(struct window *w)
}
struct window_pane *
-window_add_pane(struct window *w, u_int hlimit)
+window_add_pane(struct window *w, struct window_pane *after, u_int hlimit)
{
struct window_pane *wp;
wp = window_pane_create(w, w->sx, w->sy, hlimit);
if (TAILQ_EMPTY(&w->panes))
TAILQ_INSERT_HEAD(&w->panes, wp, entry);
- else
- TAILQ_INSERT_AFTER(&w->panes, w->active, wp, entry);
+ else {
+ if (after == NULL)
+ TAILQ_INSERT_AFTER(&w->panes, w->active, wp, entry);
+ else
+ TAILQ_INSERT_AFTER(&w->panes, after, wp, entry);
+ }
return (wp);
}