From d4926c3a9e66a2b699fbe626b2609ed5d373cce4 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Wed, 17 Jul 2024 18:57:21 +0200 Subject: [PATCH] shell: Allow dragged windows to be focused --- src/shell/focus/mod.rs | 16 +++++++++++++++- src/shell/mod.rs | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/shell/focus/mod.rs b/src/shell/focus/mod.rs index 7a6e48f9..2ff1799a 100644 --- a/src/shell/focus/mod.rs +++ b/src/shell/focus/mod.rs @@ -23,7 +23,7 @@ use tracing::{debug, trace}; use self::target::{KeyboardFocusTarget, WindowGroup}; -use super::{layout::floating::FloatingLayout, SeatExt}; +use super::{grabs::SeatMoveGrabState, layout::floating::FloatingLayout, SeatExt}; pub mod target; @@ -388,6 +388,20 @@ fn focus_target_is_valid( match target { KeyboardFocusTarget::Element(mapped) => { + if seat + .user_data() + .get::() + .is_some_and(|state| { + state + .lock() + .unwrap() + .as_ref() + .is_some_and(|state| state.element() == mapped) + }) + { + return true; + } + let is_sticky = shell .workspaces .sets diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 6d512141..09974de7 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -2592,6 +2592,9 @@ impl Shell { .refresh(xdg_activation_state); } + mapped.set_activate(true); + mapped.configure(); + let grab = MoveGrab::new( start_data, mapped,