From 406c9e4feeacdb80dfbaf33145acd7ccc93695d5 Mon Sep 17 00:00:00 2001 From: akbash Date: Thu, 10 Sep 2026 14:50:30 +0300 Subject: fix: preserve focused viewer geometry during activation (#3746) * fix: preserve focused viewer geometry during activation refs #3744 * fix: preserve geometry through activation sync refs #3744 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> --- src/server/headless/surface_interest.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/server/headless/surface_interest.rs') diff --git a/src/server/headless/surface_interest.rs b/src/server/headless/surface_interest.rs index 7270be0d..9772fc03 100644 --- a/src/server/headless/surface_interest.rs +++ b/src/server/headless/surface_interest.rs @@ -69,7 +69,20 @@ impl HeadlessServer { // explicitly requests the bounded replay after its coherent frame is visible. self.sent_window_title = None; self.resize_shared_runtime_to_effective_size_with_pending_agent_resumes(true); - self.claim_shell_tab_geometry(client_id, true); + let focused_viewer_already_owns_tab = self + .shell_tab_id_for_client(client_id) + .is_some_and(|tab_id| { + self.clients.iter().any(|(&other_id, client)| { + other_id != client_id + && client.is_active_shell_client() + && client.outer_terminal_focus == Some(true) + && self.shell_tab_id_for_client(other_id).as_deref() + == Some(tab_id.as_str()) + }) + }); + if !focused_viewer_already_owns_tab { + self.claim_shell_tab_geometry(client_id, true); + } } else { self.tab_geometry_controllers .retain(|_, controller_id| *controller_id != client_id); -- cgit v1.2.3