aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Labeyrie <calops@tocards.net>2024-12-21 15:34:14 +0100
committerIvan Molodetskikh <yalterz@gmail.com>2024-12-22 15:13:17 +0300
commitb1c40a9079b37aeac55a924e1826de77fd989645 (patch)
tree1e38fdb66e57debe105b3de68301a2add3a97b4d
parentb014c267ae199f7022bf691333e64ad6d05907f1 (diff)
downloadniri-b1c40a9079b37aeac55a924e1826de77fd989645.tar.gz
niri-b1c40a9079b37aeac55a924e1826de77fd989645.tar.bz2
niri-b1c40a9079b37aeac55a924e1826de77fd989645.zip
fix: check for layer surface under cursor when clicking
-rw-r--r--src/niri.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/niri.rs b/src/niri.rs
index 336446b3..03b4b4e4 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -2420,7 +2420,19 @@ impl Niri {
// Check if some layer-shell surface is on top.
let layers = layer_map_for_output(output);
- let layer_under = |layer| layers.layer_under(layer, pos_within_output).is_some();
+ let layer_under = |layer| {
+ layers
+ .layer_under(layer, pos_within_output)
+ .and_then(|layer| {
+ let layer_pos_within_output =
+ layers.layer_geometry(layer).unwrap().loc.to_f64();
+ layer.surface_under(
+ pos_within_output - layer_pos_within_output,
+ WindowSurfaceType::ALL,
+ )
+ })
+ .is_some()
+ };
if layer_under(Layer::Overlay) {
return None;
}