diff options
| author | srdusr <[email protected]> | 2025-02-04 23:56:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2025-02-04 23:56:00 +0200 |
| commit | 379466fe866f006700df9ace16c12ad78adb9a83 (patch) | |
| tree | d9c5ae943328256df73223e3f4f310cc60decd80 /crates/wayland/src/udev | |
| parent | 31942ff440c6039b943b4975714dca25372f80c5 (diff) | |
| download | srdwm-379466fe866f006700df9ace16c12ad78adb9a83.tar.gz srdwm-379466fe866f006700df9ace16c12ad78adb9a83.zip | |
Fix layer-surface hit-testing giving up after the topmost bbox match fails
layer_surface_under_layers used smithay's LayerMap::layer_under(),
which returns only the single topmost surface (by z-order) whose
*bounding box* contains the point - not its real input region. If
that one surface's input region excluded the point, the old code gave
up on the whole layer-kind instead of falling through to whatever real
surface is stacked underneath it.
Concretely: any other surface on the same layer-kind with a bbox
overlapping the target - a mapped-but-mostly-transparent
backdrop/dismiss popup, concretely - would silently swallow every
hover and click meant for whatever's underneath, with no way to reach
it at all. Same failure shape as an already-fixed AGS-side bug
(Overview's own bbox-wide input-region fallback), just compositor-side
and not limited to that one instance.
Now walks every candidate on a layer-kind topmost-first and tries the
next one down when a candidate's actual input region doesn't cover the
point, instead of stopping at the first bounding-box match.
Diffstat (limited to 'crates/wayland/src/udev')
0 files changed, 0 insertions, 0 deletions