summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2023-10-30 19:36:34 +0000
committerVaxry <vaxry@vaxry.net>2023-10-30 19:36:45 +0000
commitab5497a0c9e9269b1036a0bede42cbd0bbfd94b9 (patch)
tree0424a0824795ce6acb62ebab7e9ba9596bd670df /src/Compositor.cpp
parentf48b3774a2cfa95105ea4cbe8f05f70a6357a628 (diff)
input: properly track xdg surfaces' geometry in vectorToSurfaceLocal
fixes #3703
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 9b36b338..f1ac7b2b 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -865,10 +865,13 @@ Vector2D CCompositor::vectorToSurfaceLocal(const Vector2D& vec, CWindow* pWindow
},
&iterData);
+ wlr_box geom = {0};
+ wlr_xdg_surface_get_geometry(PSURFACE, &geom);
+
if (std::get<1>(iterData) == -1337 && std::get<2>(iterData) == -1337)
return vec - pWindow->m_vRealPosition.goalv();
- return vec - pWindow->m_vRealPosition.goalv() - Vector2D{std::get<1>(iterData), std::get<2>(iterData)};
+ return vec - pWindow->m_vRealPosition.goalv() - Vector2D{std::get<1>(iterData), std::get<2>(iterData)} + Vector2D{geom.x, geom.y};
}
CMonitor* CCompositor::getMonitorFromOutput(wlr_output* out) {