From 9bc00897fcc896c49a83f55da9de2427e878401a Mon Sep 17 00:00:00 2001 From: Vaxry Date: Fri, 7 Jun 2024 19:46:24 +0200 Subject: [PATCH] xdg_shell: improve xdg_positioner slide behavior ref #6240 --- src/protocols/XDGShell.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp index b192b43c..23148fab 100644 --- a/src/protocols/XDGShell.cpp +++ b/src/protocols/XDGShell.cpp @@ -575,11 +575,11 @@ CBox CXDGPositionerRules::getPosition(const CBox& constraint, const Vector2D& pa if (leftEdgeOut && slideX) test.x = constraint.x + EDGE_PADDING; if (rightEdgeOut && slideX) - test.x = constraint.x + constraint.w - predictedBox.w - EDGE_PADDING; + test.x = std::clamp((double)(constraint.x + constraint.w - test.w), (double)(constraint.x + EDGE_PADDING), (double)INFINITY); if (topEdgeOut && slideY) test.y = constraint.y + EDGE_PADDING; if (bottomEdgeOut && slideY) - test.y = constraint.y + constraint.h - predictedBox.y - EDGE_PADDING; + test.y = std::clamp((double)(constraint.y + constraint.h - test.h), (double)(constraint.y + EDGE_PADDING), (double)INFINITY); success = test.copy().expand(-1).inside(constraint);