From 0964448f931310a8fff440611720923f28013fce Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 27 Aug 2022 19:11:21 +0200 Subject: [PATCH] fix fullscreen in moving ws --- src/Compositor.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index f172ce56..17d0afe7 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1307,9 +1307,13 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB) if (w->m_iWorkspaceID == PWORKSPACEA->m_iID) { w->m_iMonitorID = pMonitorB->ID; - // additionally, move floating windows manually - if (w->m_bIsFloating && w->m_bIsMapped && !w->m_bHidden) { + // additionally, move floating and fs windows manually + if (w->m_bIsFloating) w->m_vRealPosition = w->m_vRealPosition.vec() - pMonitorA->vecPosition + pMonitorB->vecPosition; + + if (w->m_bIsFullscreen) { + w->m_vRealPosition = pMonitorB->vecPosition; + w->m_vRealSize = pMonitorB->vecSize; } w->updateToplevel(); @@ -1323,9 +1327,13 @@ void CCompositor::swapActiveWorkspaces(CMonitor* pMonitorA, CMonitor* pMonitorB) if (w->m_iWorkspaceID == PWORKSPACEB->m_iID) { w->m_iMonitorID = pMonitorA->ID; - // additionally, move floating windows manually - if (w->m_bIsFloating && w->m_bIsMapped && !w->m_bHidden) { + // additionally, move floating and fs windows manually + if (w->m_bIsFloating) w->m_vRealPosition = w->m_vRealPosition.vec() - pMonitorB->vecPosition + pMonitorA->vecPosition; + + if (w->m_bIsFullscreen) { + w->m_vRealPosition = pMonitorA->vecPosition; + w->m_vRealSize = pMonitorA->vecSize; } w->updateToplevel(); @@ -1426,9 +1434,15 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni if (w->m_iWorkspaceID == pWorkspace->m_iID) { w->m_iMonitorID = pMonitor->ID; - // additionally, move floating windows manually - if (w->m_bIsFloating && w->m_bIsMapped && !w->m_bHidden) { - w->m_vRealPosition = w->m_vRealPosition.vec() - POLDMON->vecPosition + pMonitor->vecPosition; + // additionally, move floating and fs windows manually + if (w->m_bIsMapped && !w->m_bHidden) { + if (w->m_bIsFloating) + w->m_vRealPosition = w->m_vRealPosition.vec() - POLDMON->vecPosition + pMonitor->vecPosition; + + if (w->m_bIsFullscreen) { + w->m_vRealPosition = pMonitor->vecPosition; + w->m_vRealSize = pMonitor->vecSize; + } } w->updateToplevel();