diff --git a/src/input/mod.rs b/src/input/mod.rs index 7672be84..9b06d0d7 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -23,7 +23,7 @@ use crate::{ }, zoom::ZoomState, }, - utils::{float::NextDown, prelude::*, quirks::workspace_overview_is_open}, + utils::{prelude::*, quirks::workspace_overview_is_open}, wayland::{ handlers::{screencopy::SessionHolder, xwayland_keyboard_grab::XWaylandGrabSeat}, protocols::screencopy::{BufferConstraints, CursorSessionRef}, @@ -356,6 +356,16 @@ impl State { .cloned() .unwrap_or(current_output.clone()); + let output_geometry = output.geometry(); + position.x = position.x.clamp( + output_geometry.loc.x as f64, + (output_geometry.loc.x + output_geometry.size.w - 1) as f64, + ); + position.y = position.y.clamp( + output_geometry.loc.y as f64, + (output_geometry.loc.y + output_geometry.size.h - 1) as f64, + ); + let new_under = State::surface_under(position, &output, &shell) .map(|(target, pos)| (target, pos.as_logical())); @@ -482,17 +492,6 @@ impl State { } } - let output_geometry = output.geometry(); - - position.x = position.x.clamp( - output_geometry.loc.x as f64, - ((output_geometry.loc.x + output_geometry.size.w) as f64).next_lower(), // FIXME: Replace with f64::next_down when stable - ); - position.y = position.y.clamp( - output_geometry.loc.y as f64, - ((output_geometry.loc.y + output_geometry.size.h) as f64).next_lower(), // FIXME: Replace with f64::next_down when stable - ); - // If confined, don't move pointer if it would go outside surface or region if pointer_confined { if let Some((surface, surface_loc)) = &under {