From 07f14314a15badbd3e5133375bb59232795d4257 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Thu, 21 Mar 2024 12:51:45 +0100 Subject: [PATCH] input: Explain why we don't focus override-redirect windows --- src/input/mod.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/input/mod.rs b/src/input/mod.rs index ea449a4f..83d38628 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -946,6 +946,8 @@ impl State { } }; if !done { + // Don't check override redirect windows, because we don't set keyboard focus to them explicitly. + // These cases are handled by the XwaylandKeyboardGrab. if let Some((target, _)) = self.common.shell.element_under(pos, &output) { @@ -2290,9 +2292,11 @@ impl State { } } if let Some(or) = shell.override_redirect_windows.iter().find(|or| { - or.is_in_input_region(&(global_pos.as_logical() - or.geometry().loc.to_f64())) + or.is_in_input_region( + &(global_pos.as_logical() - X11Surface::geometry(*or).loc.to_f64()), + ) }) { - return Some((or.clone().into(), or.geometry().loc.as_global())); + return Some((or.clone().into(), X11Surface::geometry(or).loc.as_global())); } Some((window.clone().into(), output_geo.loc)) } else { @@ -2320,7 +2324,7 @@ impl State { if let Some(or) = shell.override_redirect_windows.iter().find(|or| { or.is_in_input_region(&(global_pos.as_logical() - or.geometry().loc.to_f64())) }) { - return Some((or.clone().into(), or.geometry().loc.as_global())); + return Some((or.clone().into(), X11Surface::geometry(or).loc.as_global())); } if let Some((target, loc)) = shell.element_under(global_pos, output) { return Some((target, loc));