diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-05-17 19:43:56 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-05-17 19:43:56 +0100 |
| commit | 9518cec833606166f6901fae0e68503a64938fce (patch) | |
| tree | f24e556989e93f63f063b10811f2150195838620 /src/desktop/Popup.cpp | |
| parent | 23cd4c7998cc4308e5db9b64994ebd6b27c38877 (diff) | |
popup: clip input region to surface size
fixes #6125
Diffstat (limited to 'src/desktop/Popup.cpp')
| -rw-r--r-- | src/desktop/Popup.cpp | 4 |
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; } |
