From 65b39cd17cf3c1279b7fb1bf30cb38ba3f579ade 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. --- usr.bin/tmux/session.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/usr.bin/tmux/session.c b/usr.bin/tmux/session.c index 4b1b54605e0..ade3011772c 100644 --- a/usr.bin/tmux/session.c +++ b/usr.bin/tmux/session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.92 2022/02/22 13:31:18 nicm Exp $ */ +/* $OpenBSD: session.c,v 1.93 2022/10/17 10:59:42 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -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). */ -- 2.20.1