From 3cd6e3960f0cbf500786497017ff3084cc9deb17 Mon Sep 17 00:00:00 2001 From: Maximilian Seidler <78690852+PaideiaDilemma@users.noreply.github.com> Date: Sun, 26 Jan 2025 12:23:39 +0000 Subject: [PATCH] xwayland: fix pointer mismatches with multiple monitors (#9179) --- src/desktop/Window.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index 96b87205..b1b3c66c 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -1702,11 +1702,9 @@ void CWindow::sendWindowSize(Vector2D size, bool force, std::optional // TODO: this should be decoupled from setWindowSize IMO Vector2D windowPos = overridePos.value_or(m_vRealPosition->goal()); - if (m_bIsX11 && PMONITOR) { - windowPos -= PMONITOR->vecPosition; // normalize to monitor - if (*PXWLFORCESCALEZERO) - windowPos *= PMONITOR->scale; // scale if applicable - windowPos += PMONITOR->vecXWaylandPosition; // move to correct position for xwayland + if (m_bIsX11) { + if (const auto XWAYLANDPOS = g_pXWaylandManager->waylandToXWaylandCoords(windowPos); XWAYLANDPOS != Vector2D{}) + windowPos = XWAYLANDPOS; } if (!force && m_vPendingReportedSize == size && (windowPos == m_vReportedPosition || !m_bIsX11))