Signed-off-by: Takeshi Banse <
t...@laafc.net>
---
Hi,
I've found that the `join-pane -b` command does not preserve the pane's
berofe-ness internally.
For example:
The commands `join-pane -b` then `select-layout even-horizontal` are issued,
the newly joined pane swaps its position from above.
Below is an example shell session:
----
% ./tmux -f/dev/null -S/tmp/join-b.sock new
% cat >/tmp/tmux-run-join-b<<'EOT'
split-window -I # The *new* pane which has contents from stdin created
break-pane
select-pane -m
select-window -t!
join-pane -b -t. # at the first site, `join-pane -b` works as expected, but
select-layout even-vertical
# but the *new* pane swaps its position at this point
EOT
% echo new-above | \
./tmux -f/dev/null -S/tmp/join-b.sock source /tmp/tmux-run-join-b
----
I expect that the newly created pane (the "new-above" pane) stays on above
after the command `select-layout even-vertical`. But the "new-obove" pane
does not stay on top in this case.
Below patch teaches the same thing in layout.c:layout_split_pane().
cmd-join-pane.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/cmd-join-pane.c b/cmd-join-pane.c
index 306cf4bc..36805c46 100644
--- a/cmd-join-pane.c
+++ b/cmd-join-pane.c
@@ -142,7 +142,10 @@ cmd_join_pane_exec(struct cmd *self, struct cmdq_item *item)
src_wp->window = dst_w;
options_set_parent(src_wp->options, dst_w->options);
src_wp->flags |= PANE_STYLECHANGED;
- TAILQ_INSERT_AFTER(&dst_w->panes, dst_wp, src_wp, entry);
+ if (flags & SPAWN_BEFORE)
+ TAILQ_INSERT_BEFORE(dst_wp, src_wp, entry);
+ else
+ TAILQ_INSERT_AFTER(&dst_w->panes, dst_wp, src_wp, entry);
layout_assign_pane(lc, src_wp);
recalculate_sizes();
--
2.30.0