summaryrefslogtreecommitdiff
path: root/src/desktop/Popup.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-05-17 19:43:56 +0100
committerVaxry <vaxry@vaxry.net>2024-05-17 19:43:56 +0100
commit9518cec833606166f6901fae0e68503a64938fce (patch)
treef24e556989e93f63f063b10811f2150195838620 /src/desktop/Popup.cpp
parent23cd4c7998cc4308e5db9b64994ebd6b27c38877 (diff)
popup: clip input region to surface size
fixes #6125
Diffstat (limited to 'src/desktop/Popup.cpp')
-rw-r--r--src/desktop/Popup.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/desktop/Popup.cpp b/src/desktop/Popup.cpp
index c652d298..03acfff9 100644
--- a/src/desktop/Popup.cpp
+++ b/src/desktop/Popup.cpp
@@ -301,7 +301,9 @@ CPopup* CPopup::at(const Vector2D& globalCoords, bool allowsInput) {
return p;
} else {
const Vector2D offset = p->m_pResource ? (p->size() - p->m_pResource->geometry.size()) / 2.F : Vector2D{};
- const auto REGION = CRegion{&p->m_sWLSurface.wlr()->current.input}.translate(p->coordsGlobal() + offset);
+ const auto REGION = CRegion{&p->m_sWLSurface.wlr()->current.input}
+ .intersect(CBox{{}, {p->m_sWLSurface.wlr()->current.width, p->m_sWLSurface.wlr()->current.height}})
+ .translate(p->coordsGlobal() + offset);
if (REGION.containsPoint(globalCoords))
return p;
}