diff options
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 52a18d2b..097b881c 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1174,6 +1174,8 @@ void CKeybindManager::toggleGroup(std::string args) { if (!PWINDOW) return; + g_pCompositor->setWindowFullscreen(PWINDOW, false, FULLSCREEN_FULL); + if (!PWINDOW->m_sGroupData.pNextWindow) { PWINDOW->m_sGroupData.pNextWindow = PWINDOW; PWINDOW->m_sGroupData.head = true; @@ -1205,10 +1207,12 @@ void CKeybindManager::toggleGroup(std::string args) { w->m_sGroupData.head = false; } + g_pKeybindManager->m_bGroupsLocked = true; for (auto& w : members) { g_pLayoutManager->getCurrentLayout()->onWindowCreated(w); w->updateWindowDecos(); } + g_pKeybindManager->m_bGroupsLocked = false; } } @@ -2027,14 +2031,19 @@ void CKeybindManager::moveIntoGroup(std::string args) { if (!PWINDOWINDIR || !PWINDOWINDIR->m_sGroupData.pNextWindow) return; - g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); + if (!PWINDOW->m_sGroupData.pNextWindow) + PWINDOW->m_dWindowDecorations.emplace_back(std::make_unique<CHyprGroupBarDecoration>(PWINDOW)); - PWINDOWINDIR->insertWindowToGroup(PWINDOW); + g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); // This removes groupped property! - PWINDOW->m_dWindowDecorations.emplace_back(std::make_unique<CHyprGroupBarDecoration>(PWINDOW)); + PWINDOW->m_sGroupData.locked = false; + PWINDOW->m_sGroupData.head = false; + PWINDOWINDIR->insertWindowToGroup(PWINDOW); + PWINDOWINDIR->setGroupCurrent(PWINDOW); PWINDOW->updateWindowDecos(); g_pLayoutManager->getCurrentLayout()->recalculateWindow(PWINDOW); + g_pCompositor->focusWindow(PWINDOW); } void CKeybindManager::moveOutOfGroup(std::string args) { |
