From 5091236d4d394a5b406a75718697655bf8b3ba51 Mon Sep 17 00:00:00 2001
From: Michael Grant <mgrant@grant.org>
Date: Sat, 29 Mar 2025 23:04:14 +0000
Subject: [PATCH] skip foreach loop if done

---
 server-client.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/server-client.c b/server-client.c
index 86d84425..09e65a18 100644
--- a/server-client.c
+++ b/server-client.c
@@ -2629,12 +2629,14 @@ server_client_handle_key(struct client *c, struct key_event *event)
 		}
 		if (c->overlay_key != NULL) {
 			done = c->overlay_key(c, c->overlay_data, event);
-			TAILQ_FOREACH(wp, &c->session->curw->window->panes, entry) {
-				if (~c->flags & CLIENT_OVERLAYFOCUSED)
-					goto focused;
-			}
 			if (done)
 				server_client_clear_overlay(c);
+			else {
+				TAILQ_FOREACH(wp, &c->session->curw->window->panes, entry) {
+					if (~c->flags & CLIENT_OVERLAYFOCUSED)
+						goto focused;
+				}
+			}
 			return (0);
 		}
 focused:	if (c->prompt_string != NULL) {