diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/handlers/xdg_shell.rs | 2 | ||||
| -rw-r--r-- | src/input/mod.rs | 8 | ||||
| -rw-r--r-- | src/input/move_grab.rs | 1 | ||||
| -rw-r--r-- | src/input/resize_grab.rs | 1 | ||||
| -rw-r--r-- | src/input/spatial_movement_grab.rs | 1 | ||||
| -rw-r--r-- | src/niri.rs | 6 |
6 files changed, 6 insertions, 13 deletions
diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs index ac078f86..0ac82d79 100644 --- a/src/handlers/xdg_shell.rs +++ b/src/handlers/xdg_shell.rs @@ -148,7 +148,6 @@ impl XdgShellHandler for State { PointerOrTouchStartData::Pointer(start_data) => { let grab = MoveGrab::new(start_data, window); pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.pointer_grab_ongoing = true; } PointerOrTouchStartData::Touch(start_data) => { let touch = self.niri.seat.get_touch().unwrap(); @@ -246,7 +245,6 @@ impl XdgShellHandler for State { PointerOrTouchStartData::Pointer(start_data) => { let grab = ResizeGrab::new(start_data, window); pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.pointer_grab_ongoing = true; } PointerOrTouchStartData::Touch(start_data) => { let touch = self.niri.seat.get_touch().unwrap(); diff --git a/src/input/mod.rs b/src/input/mod.rs index 888631e2..5800b8a4 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -1320,8 +1320,13 @@ impl State { self.niri.tablet_cursor_location = None; // Check if we have an active pointer constraint. + // + // FIXME: ideally this should use the pointer focus with up-to-date global location. let mut pointer_confined = None; if let Some(under) = &self.niri.pointer_contents.surface { + // No need to check if the pointer focus surface matches, because here we're checking + // for an already-active constraint, and the constraint is deactivated when the focused + // surface changes. let pos_within_surface = pos - under.1; let mut pointer_locked = false; @@ -1583,7 +1588,6 @@ impl State { }; let grab = MoveGrab::new(start_data, window.clone()); pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.pointer_grab_ongoing = true; self.niri .cursor_manager .set_cursor_image(CursorImageStatus::Named(CursorIcon::Move)); @@ -1649,7 +1653,6 @@ impl State { }; let grab = ResizeGrab::new(start_data, window.clone()); pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.pointer_grab_ongoing = true; self.niri.cursor_manager.set_cursor_image( CursorImageStatus::Named(edges.cursor_icon()), ); @@ -1685,7 +1688,6 @@ impl State { }; let grab = SpatialMovementGrab::new(start_data, output); pointer.set_grab(self, grab, serial, Focus::Clear); - self.niri.pointer_grab_ongoing = true; self.niri .cursor_manager .set_cursor_image(CursorImageStatus::Named(CursorIcon::AllScroll)); diff --git a/src/input/move_grab.rs b/src/input/move_grab.rs index 96230f33..a11a09cf 100644 --- a/src/input/move_grab.rs +++ b/src/input/move_grab.rs @@ -34,7 +34,6 @@ impl MoveGrab { state.niri.layout.interactive_move_end(&self.window); // FIXME: only redraw the window output. state.niri.queue_redraw_all(); - state.niri.pointer_grab_ongoing = false; state .niri .cursor_manager diff --git a/src/input/resize_grab.rs b/src/input/resize_grab.rs index 535bae32..5b58c7b0 100644 --- a/src/input/resize_grab.rs +++ b/src/input/resize_grab.rs @@ -22,7 +22,6 @@ impl ResizeGrab { fn on_ungrab(&mut self, state: &mut State) { state.niri.layout.interactive_resize_end(&self.window); - state.niri.pointer_grab_ongoing = false; state .niri .cursor_manager diff --git a/src/input/spatial_movement_grab.rs b/src/input/spatial_movement_grab.rs index 5a0e6a8a..7e6d81d0 100644 --- a/src/input/spatial_movement_grab.rs +++ b/src/input/spatial_movement_grab.rs @@ -50,7 +50,6 @@ impl SpatialMovementGrab { state.niri.queue_redraw(&output); } - state.niri.pointer_grab_ongoing = false; state .niri .cursor_manager diff --git a/src/niri.rs b/src/niri.rs index c3f267c2..dae46938 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -282,8 +282,6 @@ pub struct Niri { /// various tooltips from sticking around. pub pointer_hidden: bool, pub pointer_inactivity_timer: Option<RegistrationToken>, - // FIXME: this should be able to be removed once PointerFocus takes grabs into account. - pub pointer_grab_ongoing: bool, pub tablet_cursor_location: Option<Point<f64, Logical>>, pub gesture_swipe_3f_cumulative: Option<(f64, f64)>, pub vertical_wheel_tracker: ScrollTracker, @@ -1877,7 +1875,6 @@ impl Niri { pointer_contents: PointContents::default(), pointer_hidden: false, pointer_inactivity_timer: None, - pointer_grab_ongoing: false, tablet_cursor_location: None, gesture_swipe_3f_cumulative: None, vertical_wheel_tracker: ScrollTracker::new(120), @@ -4526,8 +4523,7 @@ impl Niri { let Some((surface, surface_loc)) = &self.pointer_contents.surface else { return; }; - - if self.pointer_grab_ongoing { + if Some(surface) != pointer.current_focus().as_ref() { return; } |
