diff options
| author | akbash <akbash@herdr.dev> | 2026-09-10 14:50:30 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-10 14:50:30 +0300 |
| commit | 406c9e4feeacdb80dfbaf33145acd7ccc93695d5 (patch) | |
| tree | a54f6efaeceb1e516276569dc7308309b0c4d529 /src/server/headless/surface_interest.rs | |
| parent | 3813af0ffee325bf6bf6ee78ee952240524d0ee1 (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.rs | 15 |
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); |
