From d26128c7051e1c9ad0c8af05f94c70d54f615562 Mon Sep 17 00:00:00 2001 From: drendog <53359960+drendog@users.noreply.github.com> Date: Tue, 25 Jun 2024 21:17:22 +0200 Subject: [PATCH] fix: deal with floating point to clamp to prev value --- src/managers/PointerManager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp index bd92b1fa..ab9e4785 100644 --- a/src/managers/PointerManager.cpp +++ b/src/managers/PointerManager.cpp @@ -637,8 +637,11 @@ Vector2D CPointerManager::closestValid(const Vector2D& pos) { for (auto& b : currentMonitorLayout.monitorBoxes) { auto p = b.closestPoint(vec); + auto max_x = std::nextafter(b.x + b.w, b.x + b.w - 1); + auto max_y = std::nextafter(b.y + b.h, b.y + b.h - 1); + // because closestPoint does clamp up to x + w and y + h - p = Vector2D{std::clamp(p.x, b.x, b.x + b.w - 1), std::clamp(p.y, b.y, b.y + b.h - 1)}; + p = Vector2D{std::clamp(p.x, b.x, max_x), std::clamp(p.y, b.y, max_y)}; auto distSq = p.distanceSq(vec);