diff options
Diffstat (limited to 'src/layout')
| -rw-r--r-- | src/layout/DwindleLayout.cpp | 4 | ||||
| -rw-r--r-- | src/layout/IHyprLayout.cpp | 2 | ||||
| -rw-r--r-- | src/layout/MasterLayout.cpp | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 5db9d771..3d16cb12 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -311,7 +311,9 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) { } // if it's a group, add the window - if (OPENINGON->pWindow->m_sGroupData.pNextWindow && !g_pKeybindManager->m_bGroupsLocked) { + if (OPENINGON->pWindow->m_sGroupData.pNextWindow && !OPENINGON->pWindow->getGroupHead()->m_sGroupData.locked && // target is an unlocked group + (!pWindow->m_sGroupData.pNextWindow || !pWindow->getGroupHead()->m_sGroupData.locked) // source is not group or is a unlocked group + && !g_pKeybindManager->m_bGroupsLocked) { m_lDwindleNodesData.remove(*PNODE); OPENINGON->pWindow->insertWindowToGroup(pWindow); diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp index b5663b69..8f256630 100644 --- a/src/layout/IHyprLayout.cpp +++ b/src/layout/IHyprLayout.cpp @@ -45,6 +45,8 @@ void IHyprLayout::onWindowRemoved(CWindow* pWindow) { if (pWindow->m_sGroupData.head) { pWindow->m_sGroupData.head = false; curr->m_sGroupData.head = true; + curr->m_sGroupData.locked = pWindow->m_sGroupData.locked; + pWindow->m_sGroupData.locked = false; } if (pWindow == m_pLastTiledWindow) diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index 8f208fdb..494fd7a2 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -91,7 +91,9 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) { getNodeFromWindow(g_pCompositor->m_pLastWindow) : getMasterNodeOnWorkspace(pWindow->m_iWorkspaceID); - if (OPENINGON && OPENINGON->pWindow->m_sGroupData.pNextWindow && OPENINGON != PNODE && !g_pKeybindManager->m_bGroupsLocked) { + if (OPENINGON && OPENINGON->pWindow->m_sGroupData.pNextWindow && !OPENINGON->pWindow->getGroupHead()->m_sGroupData.locked && // target is an unlocked group + (!pWindow->m_sGroupData.pNextWindow || !pWindow->getGroupHead()->m_sGroupData.locked) // source is not group or is an unlocked group + && OPENINGON != PNODE && !g_pKeybindManager->m_bGroupsLocked) { m_lMasterNodesData.remove(*PNODE); OPENINGON->pWindow->insertWindowToGroup(pWindow); |
