summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-22 15:45:56 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-22 15:45:56 +0200
commit770bada5d541e737ae17744f70eb019494471a29 (patch)
tree9be90ba75ffed8b22cbe98d4db3468b93ff813df /src/Compositor.cpp
parent499d2e41bfbc76525c3f03e1fb0a057b910c0c4b (diff)
Fixed oversized apps' incorrect layout
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 32ffab34..a5339948 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -443,7 +443,11 @@ wlr_surface* CCompositor::vectorWindowToSurface(const Vector2D& pos, CWindow* pW
double subx, suby;
- const auto PFOUND = wlr_xdg_surface_surface_at(PSURFACE, pos.x - pWindow->m_vRealPosition.vec().x, pos.y - pWindow->m_vRealPosition.vec().y, &subx, &suby);
+ // calc for oversized windows... fucking bullshit, again.
+ wlr_box geom;
+ wlr_xdg_surface_get_geometry(pWindow->m_uSurface.xdg, &geom);
+
+ const auto PFOUND = wlr_xdg_surface_surface_at(PSURFACE, pos.x - pWindow->m_vRealPosition.vec().x + geom.x, pos.y - pWindow->m_vRealPosition.vec().y + geom.y, &subx, &suby);
if (PFOUND) {
sl.x = subx;
@@ -454,6 +458,9 @@ wlr_surface* CCompositor::vectorWindowToSurface(const Vector2D& pos, CWindow* pW
sl.x = pos.x - pWindow->m_vRealPosition.vec().x;
sl.y = pos.y - pWindow->m_vRealPosition.vec().y;
+ sl.x += geom.x;
+ sl.y += geom.y;
+
return PSURFACE->surface;
}