summaryrefslogtreecommitdiff
path: root/src/layout/IHyprLayout.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2023-08-15 20:09:32 +0200
committervaxerski <vaxry@vaxry.net>2023-08-15 20:10:43 +0200
commit4986d74ef201171a930c312a8e3b72a22d9b84ee (patch)
tree49a8a6db7178fe3cd7cfe063180d87fd4ada6005 /src/layout/IHyprLayout.cpp
parent91e28bbe9df85e2e94fbcc0137106362aea14ab5 (diff)
xwayland: fix use of xwayland coords in native spaces
Diffstat (limited to 'src/layout/IHyprLayout.cpp')
-rw-r--r--src/layout/IHyprLayout.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index f39b190a..2e3f690f 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -77,7 +77,14 @@ void IHyprLayout::onWindowRemovedFloating(CWindow* pWindow) {
void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
wlr_box desiredGeometry = {0};
g_pXWaylandManager->getGeometryForWindow(pWindow, &desiredGeometry);
- const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+
+ if (pWindow->m_bIsX11) {
+ Vector2D xy = {desiredGeometry.x, desiredGeometry.y};
+ xy = g_pXWaylandManager->xwaylandToWaylandCoords(xy);
+ desiredGeometry.x = xy.x;
+ desiredGeometry.y = xy.y;
+ }
static auto* const PXWLFORCESCALEZERO = &g_pConfigManager->getConfigValuePtr("xwayland:force_zero_scaling")->intValue;
@@ -103,7 +110,7 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
if (pWindow->m_bIsX11 && pWindow->m_uSurface.xwayland->override_redirect) {
if (pWindow->m_uSurface.xwayland->x != 0 && pWindow->m_uSurface.xwayland->y != 0)
- pWindow->m_vRealPosition = Vector2D{pWindow->m_uSurface.xwayland->x, pWindow->m_uSurface.xwayland->y};
+ pWindow->m_vRealPosition = g_pXWaylandManager->xwaylandToWaylandCoords({pWindow->m_uSurface.xwayland->x, pWindow->m_uSurface.xwayland->y});
else
pWindow->m_vRealPosition = Vector2D(PMONITOR->vecPosition.x + (PMONITOR->vecSize.x - pWindow->m_vRealSize.goalv().x) / 2.f,
PMONITOR->vecPosition.y + (PMONITOR->vecSize.y - pWindow->m_vRealSize.goalv().y) / 2.f);
@@ -153,10 +160,8 @@ void IHyprLayout::onWindowCreatedFloating(CWindow* pWindow) {
}
}
- if (*PXWLFORCESCALEZERO && pWindow->m_bIsX11) {
- pWindow->m_vRealSize = pWindow->m_vRealSize.goalv() / PMONITOR->scale;
- pWindow->m_vRealPosition = pWindow->m_vRealPosition.goalv() / PMONITOR->scale;
- }
+ if (*PXWLFORCESCALEZERO && pWindow->m_bIsX11)
+ pWindow->m_vRealSize = pWindow->m_vRealSize.goalv() / PMONITOR->scale;
if (pWindow->m_bX11DoesntWantBorders || (pWindow->m_bIsX11 && pWindow->m_uSurface.xwayland->override_redirect)) {
pWindow->m_vRealPosition.warp();