diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-03-10 22:27:17 +0000 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-03-10 22:27:23 +0000 |
| commit | 0a1632a79f08ea5a2581832263354e06e9fab1f0 (patch) | |
| tree | decf238ca526e095190031f67936a0eda7c2573f /src/layout/DwindleLayout.cpp | |
| parent | 981296f101cf79176a8da7a1aa64fa297b2976dc (diff) | |
dwindle: preserve fs state on switchWindows
fixes #2842
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 2f66482a..cc4bc0b3 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -963,9 +963,16 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) { auto PNODE = getNodeFromWindow(pWindow); auto PNODE2 = getNodeFromWindow(pWindow2); - if (!PNODE2 || !PNODE) { + if (!PNODE2 || !PNODE) return; - } + + const bool FS1 = pWindow->m_bIsFullscreen; + const bool FS2 = pWindow2->m_bIsFullscreen; + + if (FS1) + g_pCompositor->setWindowFullscreen(pWindow, false); + if (FS2) + g_pCompositor->setWindowFullscreen(pWindow2, false); SDwindleNodeData* ACTIVE1 = nullptr; SDwindleNodeData* ACTIVE2 = nullptr; @@ -982,9 +989,8 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) { // recalc the workspace getMasterNodeOnWorkspace(PNODE->workspaceID)->recalcSizePosRecursive(); - if (PNODE2->workspaceID != PNODE->workspaceID) { + if (PNODE2->workspaceID != PNODE->workspaceID) getMasterNodeOnWorkspace(PNODE2->workspaceID)->recalcSizePosRecursive(); - } if (ACTIVE1) { ACTIVE1->box = PNODE->box; @@ -1000,6 +1006,11 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) { g_pHyprRenderer->damageWindow(pWindow); g_pHyprRenderer->damageWindow(pWindow2); + + if (FS1) + g_pCompositor->setWindowFullscreen(pWindow2, true); + if (FS2) + g_pCompositor->setWindowFullscreen(pWindow, true); } void CHyprDwindleLayout::alterSplitRatio(CWindow* pWindow, float ratio, bool exact) { |
