diff options
| author | thejch <66577496+thejch@users.noreply.github.com> | 2024-03-16 17:15:12 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-17 00:15:12 +0000 |
| commit | 0387528c56c4d9faf93946cbc9426973de6ef61b (patch) | |
| tree | ccf67ca0ceb71a8ce4c17743321e274ba044df69 /src/layout/DwindleLayout.cpp | |
| parent | 0e87a08e15c023325b64920d9e1159f38a090695 (diff) | |
master: fix moving fullscreen workspace and remove duplicate code (#5131)
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 49 |
1 files changed, 16 insertions, 33 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index cc4bc0b3..1ce6aa82 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -541,42 +541,24 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) { if (!PMONITOR) return; // ??? - const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PMONITOR->activeWorkspace); + g_pHyprRenderer->damageMonitor(PMONITOR); - if (!PWORKSPACE) - return; + if (PMONITOR->specialWorkspaceID) + calculateWorkspace(PMONITOR->specialWorkspaceID); - g_pHyprRenderer->damageMonitor(PMONITOR); + calculateWorkspace(PMONITOR->activeWorkspace); +} - if (PMONITOR->specialWorkspaceID) { - const auto PSPECIALWS = g_pCompositor->getWorkspaceByID(PMONITOR->specialWorkspaceID); - - if (PSPECIALWS->m_bHasFullscreenWindow) { - const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PSPECIALWS->m_iID); - - if (PSPECIALWS->m_efFullscreenMode == FULLSCREEN_FULL) { - PFULLWINDOW->m_vRealPosition = PMONITOR->vecPosition; - PFULLWINDOW->m_vRealSize = PMONITOR->vecSize; - } else if (PSPECIALWS->m_efFullscreenMode == FULLSCREEN_MAXIMIZED) { - SDwindleNodeData fakeNode; - fakeNode.pWindow = PFULLWINDOW; - fakeNode.box = {PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft, PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight}; - fakeNode.workspaceID = PSPECIALWS->m_iID; - PFULLWINDOW->m_vPosition = fakeNode.box.pos(); - PFULLWINDOW->m_vSize = fakeNode.box.size(); - fakeNode.ignoreFullscreenChecks = true; - - applyNodeDataToWindow(&fakeNode); - } - } +void CHyprDwindleLayout::calculateWorkspace(const int& ws) { + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(ws); - const auto TOPNODE = getMasterNodeOnWorkspace(PMONITOR->specialWorkspaceID); + if (!PWORKSPACE) + return; - if (TOPNODE && PMONITOR) { - TOPNODE->box = {PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft, PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight}; - TOPNODE->recalcSizePosRecursive(); - } - } + const auto PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID); + + if (!PMONITOR) + return; if (PWORKSPACE->m_bHasFullscreenWindow) { // massive hack from the fullscreen func @@ -597,12 +579,13 @@ void CHyprDwindleLayout::recalculateMonitor(const int& monid) { applyNodeDataToWindow(&fakeNode); } + // if has fullscreen, don't calculate the rest return; } - const auto TOPNODE = getMasterNodeOnWorkspace(PMONITOR->activeWorkspace); + const auto TOPNODE = getMasterNodeOnWorkspace(ws); - if (TOPNODE && PMONITOR) { + if (TOPNODE) { TOPNODE->box = {PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft, PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight}; TOPNODE->recalcSizePosRecursive(); } |
