From 1c78155e70a9f72ed6c191807c2b381cf114b91f Mon Sep 17 00:00:00 2001 From: nicm Date: Sat, 13 Jun 2020 09:05:53 +0000 Subject: Add -b flags to insert a window before (like the existing -a for after) to break-pane, move-window, new-window. GitHub issue 2261. --- window.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index 523e9913..66298495 100644 --- a/window.c +++ b/window.c @@ -1490,13 +1490,16 @@ winlink_clear_flags(struct winlink *wl) /* Shuffle window indexes up. */ int -winlink_shuffle_up(struct session *s, struct winlink *wl) +winlink_shuffle_up(struct session *s, struct winlink *wl, int before) { int idx, last; if (wl == NULL) return (-1); - idx = wl->idx + 1; + if (before) + idx = wl->idx; + else + idx = wl->idx + 1; /* Find the next free index. */ for (last = idx; last < INT_MAX; last++) { @@ -1509,8 +1512,9 @@ winlink_shuffle_up(struct session *s, struct winlink *wl) /* Move everything from last - 1 to idx up a bit. */ for (; last > idx; last--) { wl = winlink_find_by_index(&s->windows, last - 1); - server_link_window(s, wl, s, last, 0, 0, NULL); - server_unlink_window(s, wl); + RB_REMOVE(winlinks, &s->windows, wl); + wl->idx++; + RB_INSERT(winlinks, &s->windows, wl); } return (idx); -- cgit v1.2.3