From 064124cc5f3df250f0f866ae1df7bc4cd19bf833 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 5 Jul 2013 14:52:33 +0000 Subject: [PATCH] When the session option renumber-window is used, ensure we iterate over all sessions in that group when the winlinks are reordered, otherwise the winlink lists are out of sync with one another. From Thomas Adam. --- server-fn.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server-fn.c b/server-fn.c index d92754e1..efb95acd 100644 --- a/server-fn.c +++ b/server-fn.c @@ -262,8 +262,9 @@ server_lock_client(struct client *c) void server_kill_window(struct window *w) { - struct session *s, *next_s; - struct winlink *wl; + struct session *s, *next_s, *target_s; + struct session_group *sg; + struct winlink *wl; next_s = RB_MIN(sessions, &sessions); while (next_s != NULL) { @@ -280,8 +281,13 @@ server_kill_window(struct window *w) server_redraw_session_group(s); } - if (options_get_number(&s->options, "renumber-windows")) - session_renumber_windows(s); + if (options_get_number(&s->options, "renumber-windows")) { + if ((sg = session_group_find(s)) != NULL) { + TAILQ_FOREACH(target_s, &sg->sessions, gentry) + session_renumber_windows(target_s); + } else + session_renumber_windows(s); + } } recalculate_sizes(); }