From bbc76ba4e4e24ddfd524b4c30dd76a40708819fb Mon Sep 17 00:00:00 2001 From: drendog <53359960+drendog@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:16:59 +0200 Subject: [PATCH] math: adjust right and bottom box edges (#6) --- src/math/Box.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/math/Box.cpp b/src/math/Box.cpp index 21e8fe5..e987e9e 100644 --- a/src/math/Box.cpp +++ b/src/math/Box.cpp @@ -203,19 +203,21 @@ Vector2D Hyprutils::Math::CBox::closestPoint(const Vector2D& vec) const { if (containsPoint(vec)) return vec; - Vector2D nv = vec; - nv.x = std::clamp(nv.x, x, x + w); - nv.y = std::clamp(nv.y, y, y + h); + Vector2D nv = vec; + Vector2D maxPoint = {x + w - EPSILON, y + h - EPSILON}; + + nv.x = std::clamp(nv.x, x, maxPoint.x); + nv.y = std::clamp(nv.y, y, maxPoint.y); if (std::fabs(nv.x - x) < EPSILON) nv.x = x; - else if (std::fabs(nv.x - (x + w)) < EPSILON) - nv.x = x + w; + else if (std::fabs(nv.x - (maxPoint.x)) < EPSILON) + nv.x = maxPoint.x; if (std::fabs(nv.y - y) < EPSILON) nv.y = y; - else if (std::fabs(nv.y - (y + h)) < EPSILON) - nv.y = y + h; + else if (std::fabs(nv.y - (maxPoint.y)) < EPSILON) + nv.y = maxPoint.y; return nv; }