aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/handlers/mod.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs
index c23966ed..11553932 100644
--- a/src/handlers/mod.rs
+++ b/src/handlers/mod.rs
@@ -717,11 +717,19 @@ impl XdgActivationHandler for State {
return false;
};
- let keyboard = seat.get_keyboard().unwrap();
- keyboard
- .last_enter()
- .map(|last_enter| serial.is_no_older_than(&last_enter))
- .unwrap_or(false)
+ // Check the serial against both a keyboard and a pointer, since layer-shell surfaces
+ // with no keyboard interactivity won't have any keyboard focus.
+ let kb_last_enter = seat.get_keyboard().unwrap().last_enter();
+ if kb_last_enter.is_some_and(|last_enter| serial.is_no_older_than(&last_enter)) {
+ return true;
+ }
+
+ let pointer_last_enter = seat.get_pointer().unwrap().last_enter();
+ if pointer_last_enter.is_some_and(|last_enter| serial.is_no_older_than(&last_enter)) {
+ return true;
+ }
+
+ false
}
fn request_activation(