aboutsummaryrefslogtreecommitdiff
path: root/src/server/headless/client_views.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-09 22:04:47 +0300
committerGitHub <noreply@github.com>2026-09-09 22:04:47 +0300
commit1682cab3263b27b296f477552a4e79ab54923091 (patch)
tree983b0b5492a66bb83cc068d1c0b64c674ffb9e77 /src/server/headless/client_views.rs
parent1f773dd6f44ab5a66371d4249c3d6f33a02d1069 (diff)
fix: restore plugin focus events for client navigation (#3850)
refs #3824
Diffstat (limited to 'src/server/headless/client_views.rs')
-rw-r--r--src/server/headless/client_views.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/headless/client_views.rs b/src/server/headless/client_views.rs
index 2257a05e..333c94b4 100644
--- a/src/server/headless/client_views.rs
+++ b/src/server/headless/client_views.rs
@@ -895,10 +895,10 @@ impl HeadlessServer {
if reconcile || self.app.state.popup_pane.is_some() != popup_before {
self.reconcile_client_shell_locations();
}
+ let focus_after = self.shell_focus_target(client_id);
if let Some(all_focus_before) = all_focus_before {
self.finish_shell_location_reconciliation(all_focus_before, &focused_tabs_before);
} else {
- let focus_after = self.shell_focus_target(client_id);
let focused_tabs_after = self.focused_shell_tabs();
self.app.accept_current_focus_without_events();
self.send_shell_navigation_focus_events(
@@ -908,6 +908,12 @@ impl HeadlessServer {
&focused_tabs_after,
);
}
+ if focus_before != focus_after {
+ if let Some(target) = focus_after {
+ self.app
+ .emit_focus_api_events(target.workspace_index, target.pane_id);
+ }
+ }
let geometry_changed = method_claims_geometry
&& if reconcile {
self.reapply_controlled_shell_tab_geometry(false)