From 5b6c8d5b0f9a807eaf61d7286d41a75f5e6e61e9 Mon Sep 17 00:00:00 2001 From: vaxerski Date: Tue, 20 Sep 2022 09:55:25 +0100 Subject: [PATCH] fix misc fullscreen issues --- src/layout/DwindleLayout.cpp | 10 ++++++++++ src/layout/MasterLayout.cpp | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index a4ceefea..0d2e2868 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -327,6 +327,13 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) { return; } + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID); + + if (PWORKSPACE->m_bHasFullscreenWindow) { + const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID); + g_pCompositor->setWindowFullscreen(PFULLWINDOW, false, FULLSCREEN_FULL); + } + // if it's the first, it's easy. Make it fullscreen. if (!OPENINGON || OPENINGON->pWindow == pWindow) { PNODE->position = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft; @@ -448,6 +455,9 @@ void CHyprDwindleLayout::onWindowRemovedTiling(CWindow* pWindow) { return; } + if (pWindow->m_bIsFullscreen) + g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL); + // check if it was grouped if (PNODE->isGroupMember()) { // get shit diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index e275db75..3afca2c4 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -84,6 +84,13 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) { } } + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID); + + if (PWORKSPACE->m_bHasFullscreenWindow) { + const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID); + g_pCompositor->setWindowFullscreen(PFULLWINDOW, false, FULLSCREEN_FULL); + } + // recalc recalculateMonitor(pWindow->m_iMonitorID); } @@ -94,6 +101,9 @@ void CHyprMasterLayout::onWindowRemovedTiling(CWindow* pWindow) { if (!PNODE) return; + if (pWindow->m_bIsFullscreen) + g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL); + if (PNODE->isMaster) { // find new one for (auto& nd : m_lMasterNodesData) {