From 18ed73f091204e44304192bd90c21fe5463ab46d Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 26 Feb 2023 13:55:35 +0000 Subject: [PATCH] Added moveoutofgroup dispatcher --- src/managers/KeybindManager.cpp | 18 ++++++++++++++++++ src/managers/KeybindManager.hpp | 1 + 2 files changed, 19 insertions(+) diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index ef84de86c..339a30165 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -62,6 +62,7 @@ CKeybindManager::CKeybindManager() { m_mDispatchers["focuscurrentorlast"] = focusCurrentOrLast; m_mDispatchers["lockgroups"] = lockGroups; m_mDispatchers["moveintogroup"] = moveIntoGroup; + m_mDispatchers["moveoutofgroup"] = moveOutOfGroup; m_tScrollTimer.reset(); } @@ -2080,3 +2081,20 @@ void CKeybindManager::moveIntoGroup(std::string args) { PWINDOWINDIR->insertWindowToGroup(PWINDOW); } + +void CKeybindManager::moveOutOfGroup(std::string args) { + const auto PWINDOW = g_pCompositor->m_pLastWindow; + + if (!PWINDOW || !PWINDOW->m_sGroupData.pNextWindow) + return; + + g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW); + + const auto GROUPSLOCKEDPREV = g_pKeybindManager->m_bGroupsLocked; + + g_pKeybindManager->m_bGroupsLocked = true; + + g_pLayoutManager->getCurrentLayout()->onWindowCreated(PWINDOW); + + g_pKeybindManager->m_bGroupsLocked = GROUPSLOCKEDPREV; +} diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp index 58937115b..0b8fa4e8c 100644 --- a/src/managers/KeybindManager.hpp +++ b/src/managers/KeybindManager.hpp @@ -137,6 +137,7 @@ class CKeybindManager { static void bringActiveToTop(std::string); static void lockGroups(std::string); static void moveIntoGroup(std::string); + static void moveOutOfGroup(std::string); friend class CCompositor; friend class CInputManager;