Skip to content

Commit 00cf5fb

Browse files
author
nicm
committed
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.
1 parent 3c10df4 commit 00cf5fb

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

cmd-split-window.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq)
136136
cause = xstrdup("pane too small");
137137
goto error;
138138
}
139-
new_wp = window_add_pane(w, hlimit);
139+
new_wp = window_add_pane(w, wp, hlimit);
140140
layout_assign_pane(lc, new_wp);
141141

142142
path = NULL;

tmux.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2130,7 +2130,8 @@ int window_has_pane(struct window *, struct window_pane *);
21302130
int window_set_active_pane(struct window *, struct window_pane *);
21312131
void window_redraw_active_switch(struct window *,
21322132
struct window_pane *);
2133-
struct window_pane *window_add_pane(struct window *, u_int);
2133+
struct window_pane *window_add_pane(struct window *, struct window_pane *,
2134+
u_int);
21342135
void window_resize(struct window *, u_int, u_int);
21352136
int window_zoom(struct window_pane *);
21362137
int window_unzoom(struct window *);

window.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ window_create(const char *name, int argc, char **argv, const char *path,
323323
struct window_pane *wp;
324324

325325
w = window_create1(sx, sy);
326-
wp = window_add_pane(w, hlimit);
326+
wp = window_add_pane(w, NULL, hlimit);
327327
layout_init(w, wp);
328328

329329
if (window_pane_spawn(wp, argc, argv, path, shell, cwd, env, tio,
@@ -553,15 +553,19 @@ window_unzoom(struct window *w)
553553
}
554554

555555
struct window_pane *
556-
window_add_pane(struct window *w, u_int hlimit)
556+
window_add_pane(struct window *w, struct window_pane *after, u_int hlimit)
557557
{
558558
struct window_pane *wp;
559559

560560
wp = window_pane_create(w, w->sx, w->sy, hlimit);
561561
if (TAILQ_EMPTY(&w->panes))
562562
TAILQ_INSERT_HEAD(&w->panes, wp, entry);
563-
else
564-
TAILQ_INSERT_AFTER(&w->panes, w->active, wp, entry);
563+
else {
564+
if (after == NULL)
565+
TAILQ_INSERT_AFTER(&w->panes, w->active, wp, entry);
566+
else
567+
TAILQ_INSERT_AFTER(&w->panes, after, wp, entry);
568+
}
565569
return (wp);
566570
}
567571

0 commit comments

Comments
 (0)