summaryrefslogtreecommitdiff
path: root/src/layout/DwindleLayout.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-03-10 22:27:17 +0000
committerVaxry <vaxry@vaxry.net>2024-03-10 22:27:23 +0000
commit0a1632a79f08ea5a2581832263354e06e9fab1f0 (patch)
treedecf238ca526e095190031f67936a0eda7c2573f /src/layout/DwindleLayout.cpp
parent981296f101cf79176a8da7a1aa64fa297b2976dc (diff)
dwindle: preserve fs state on switchWindows
fixes #2842
Diffstat (limited to 'src/layout/DwindleLayout.cpp')
-rw-r--r--src/layout/DwindleLayout.cpp19
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) {