From e356e3c5891fda0fc56fbfec420f13087bc40945 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Thu, 2 Jan 2025 16:29:21 +0100 Subject: [PATCH] xdg_activation: Also consider tiled windows --- src/wayland/handlers/xdg_activation.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wayland/handlers/xdg_activation.rs b/src/wayland/handlers/xdg_activation.rs index 7decb4bf..7cce939f 100644 --- a/src/wayland/handlers/xdg_activation.rs +++ b/src/wayland/handlers/xdg_activation.rs @@ -116,7 +116,7 @@ impl XdgActivationHandler for State { workspace_guard.add_workspace_state(&workspace, WState::Urgent); } } - ActivationContext::Workspace(workspace) => { + ActivationContext::Workspace(_) => { let seat = shell.seats.last_active().clone(); let current_output = seat.active_output(); @@ -124,12 +124,13 @@ impl XdgActivationHandler for State { shell.unminimize_request(&element, &seat); } + let element_workspace = shell.space_for(&element).map(|w| w.handle.clone()); let current_workspace = shell.active_space_mut(¤t_output); - let in_current_workspace = current_workspace - .floating_layer - .mapped() - .any(|m| m == &element); + let in_current_workspace = element_workspace + .as_ref() + .map(|w| *w == current_workspace.handle) + .unwrap_or(false); if in_current_workspace { current_workspace @@ -157,8 +158,7 @@ impl XdgActivationHandler for State { std::mem::drop(shell); Shell::set_focus(self, Some(&target), &seat, None, false); - } else if let Some(w) = shell.space_for(&element).map(|w| w.handle.clone()) - { + } else if let Some(w) = element_workspace { shell.append_focus_stack(&element, &seat); let mut workspace_guard = self.common.workspace_state.update(); workspace_guard.add_workspace_state(&w, WState::Urgent);