diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-10 08:03:39 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-02-10 07:29:33 -0800 |
| commit | 1d883931b4ae7704128f02fd566486fb02351196 (patch) | |
| tree | 575124aeaa26ee6a0ccff0c55a3facda9dfe9944 /src/layout/monitor.rs | |
| parent | b65fad09d8f5253a28ee7ad9d293583641fc2c36 (diff) | |
| download | niri-1d883931b4ae7704128f02fd566486fb02351196.tar.gz niri-1d883931b4ae7704128f02fd566486fb02351196.tar.bz2 niri-1d883931b4ae7704128f02fd566486fb02351196.zip | |
Account for border in contents_under()
Fixes pointer clicks going through window borders to a layer surface below,
also fixes window not getting activated in all cases from a border click.
Diffstat (limited to 'src/layout/monitor.rs')
| -rw-r--r-- | src/layout/monitor.rs | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs index ebafad17..53bf5377 100644 --- a/src/layout/monitor.rs +++ b/src/layout/monitor.rs @@ -14,7 +14,7 @@ use super::tile::Tile; use super::workspace::{ OutputId, Workspace, WorkspaceAddWindowTarget, WorkspaceId, WorkspaceRenderElement, }; -use super::{ActivateWindow, LayoutElement, Options}; +use super::{ActivateWindow, HitType, LayoutElement, Options}; use crate::animation::{Animation, Clock}; use crate::input::swipe_tracker::SwipeTracker; use crate::render_helpers::renderer::NiriRenderer; @@ -1007,13 +1007,10 @@ impl<W: LayoutElement> Monitor<W> { Some((ws, bounds.loc)) } - pub fn window_under( - &self, - pos_within_output: Point<f64, Logical>, - ) -> Option<(&W, Option<Point<f64, Logical>>)> { + pub fn window_under(&self, pos_within_output: Point<f64, Logical>) -> Option<(&W, HitType)> { let (ws, offset) = self.workspace_under(pos_within_output)?; - let (win, win_pos) = ws.window_under(pos_within_output - offset)?; - Some((win, win_pos.map(|p| p + offset))) + let (win, hit) = ws.window_under(pos_within_output - offset)?; + Some((win, hit.offset_win_pos(offset))) } pub fn resize_edges_under(&self, pos_within_output: Point<f64, Logical>) -> Option<ResizeEdge> { |
