mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Simplify pointer handling in constraint check
Minor change so that `get_pointer()` (which has a lock) does not get called twice. Also moved the call to `current_location()` to the scope where it is needed.
This commit is contained in:
committed by
Ivan Molodetskikh
parent
bb40a35ccf
commit
51b6a495c5
+4
-5
@@ -5769,18 +5769,16 @@ impl Niri {
|
||||
///
|
||||
/// Make sure the pointer location and contents are up to date before calling this.
|
||||
pub fn maybe_activate_pointer_constraint(&self) {
|
||||
let pointer = self.seat.get_pointer().unwrap();
|
||||
let pointer_pos = pointer.current_location();
|
||||
|
||||
let Some((surface, surface_loc)) = &self.pointer_contents.surface else {
|
||||
return;
|
||||
};
|
||||
|
||||
let pointer = self.seat.get_pointer().unwrap();
|
||||
if Some(surface) != pointer.current_focus().as_ref() {
|
||||
return;
|
||||
}
|
||||
|
||||
let pointer = &self.seat.get_pointer().unwrap();
|
||||
with_pointer_constraint(surface, pointer, |constraint| {
|
||||
with_pointer_constraint(surface, &pointer, |constraint| {
|
||||
let Some(constraint) = constraint else { return };
|
||||
|
||||
if constraint.is_active() {
|
||||
@@ -5789,6 +5787,7 @@ impl Niri {
|
||||
|
||||
// Constraint does not apply if not within region.
|
||||
if let Some(region) = constraint.region() {
|
||||
let pointer_pos = pointer.current_location();
|
||||
let pos_within_surface = pointer_pos - *surface_loc;
|
||||
if !region.contains(pos_within_surface.to_i32_round()) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user