From ff2766b024e6657b5f5f70dfd5acdb32085d7b70 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 17 Oct 2022 10:59:42 +0000 Subject: [PATCH] Preserve marked pane when renumbering windows. --- session.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/session.c b/session.c index 5bc5330e..c9a98d23 100644 --- a/session.c +++ b/session.c @@ -710,7 +710,7 @@ session_renumber_windows(struct session *s) struct winlink *wl, *wl1, *wl_new; struct winlinks old_wins; struct winlink_stack old_lastw; - int new_idx, new_curw_idx; + int new_idx, new_curw_idx, marked_idx = -1; /* Save and replace old window list. */ memcpy(&old_wins, &s->windows, sizeof old_wins); @@ -727,6 +727,8 @@ session_renumber_windows(struct session *s) winlink_set_window(wl_new, wl->window); wl_new->flags |= wl->flags & WINLINK_ALERTFLAGS; + if (wl == marked_pane.wl) + marked_idx = wl_new->idx; if (wl == s->curw) new_curw_idx = wl_new->idx; @@ -743,6 +745,11 @@ session_renumber_windows(struct session *s) } /* Set the current window. */ + if (marked_idx != -1) { + marked_pane.wl = winlink_find_by_index(&s->windows, marked_idx); + if (marked_pane.wl == NULL) + server_clear_marked(); + } s->curw = winlink_find_by_index(&s->windows, new_curw_idx); /* Free the old winlinks (reducing window references too). */