aboutsummaryrefslogtreecommitdiff
path: root/src/server/headless/surface_interest.rs
diff options
context:
space:
mode:
authorakbash <akbash@herdr.dev>2026-09-10 14:50:30 +0300
committerGitHub <noreply@github.com>2026-09-10 14:50:30 +0300
commit406c9e4feeacdb80dfbaf33145acd7ccc93695d5 (patch)
treea54f6efaeceb1e516276569dc7308309b0c4d529 /src/server/headless/surface_interest.rs
parent3813af0ffee325bf6bf6ee78ee952240524d0ee1 (diff)
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>
Diffstat (limited to 'src/server/headless/surface_interest.rs')
-rw-r--r--src/server/headless/surface_interest.rs15
1 files changed, 14 insertions, 1 deletions
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);