summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-02-26 13:52:11 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-02-26 13:52:11 +0000
commit55b412e0f4337192f8555f20c06af944d7b185bf (patch)
tree727fc36ad669e543b508ce4aa6aa8d72e0c4663f /src
parent3bfaeacf7da1771243771139178e22d9893e7232 (diff)
Added moveintogroup dispatcher
Diffstat (limited to 'src')
-rw-r--r--src/managers/KeybindManager.cpp26
-rw-r--r--src/managers/KeybindManager.hpp4
2 files changed, 28 insertions, 2 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 63cabd07..ef84de86 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -61,6 +61,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["focusurgentorlast"] = focusUrgentOrLast;
m_mDispatchers["focuscurrentorlast"] = focusCurrentOrLast;
m_mDispatchers["lockgroups"] = lockGroups;
+ m_mDispatchers["moveintogroup"] = moveIntoGroup;
m_tScrollTimer.reset();
}
@@ -1131,7 +1132,7 @@ void CKeybindManager::moveFocusTo(std::string args) {
if (PLASTWINDOW->m_iMonitorID != PWINDOWTOCHANGETO->m_iMonitorID) {
// event
- const auto PNEWMON = g_pCompositor->getMonitorFromID(PWINDOWTOCHANGETO->m_iMonitorID);
+ const auto PNEWMON = g_pCompositor->getMonitorFromID(PWINDOWTOCHANGETO->m_iMonitorID);
const auto PNEWWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOWTOCHANGETO->m_iWorkspaceID);
g_pCompositor->setActiveMonitor(PNEWMON);
@@ -2056,3 +2057,26 @@ void CKeybindManager::lockGroups(std::string args) {
g_pKeybindManager->m_bGroupsLocked = false;
}
}
+
+void CKeybindManager::moveIntoGroup(std::string args) {
+ char arg = args[0];
+
+ if (!isDirection(args)) {
+ Debug::log(ERR, "Cannot move into group in direction %c, unsupported direction. Supported: l,r,u/t,d/b", arg);
+ return;
+ }
+
+ const auto PWINDOW = g_pCompositor->m_pLastWindow;
+
+ if (!PWINDOW || PWINDOW->m_bIsFloating)
+ return;
+
+ const auto PWINDOWINDIR = g_pCompositor->getWindowInDirection(PWINDOW, arg);
+
+ if (!PWINDOWINDIR || !PWINDOWINDIR->m_sGroupData.pNextWindow)
+ return;
+
+ g_pLayoutManager->getCurrentLayout()->onWindowRemoved(PWINDOW);
+
+ PWINDOWINDIR->insertWindowToGroup(PWINDOW);
+}
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 3f2debbf..58937115 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -25,7 +25,8 @@ struct SKeybind {
bool shadowed = false;
};
-enum eFocusWindowMode {
+enum eFocusWindowMode
+{
MODE_CLASS_REGEX = 0,
MODE_TITLE_REGEX,
MODE_ADDRESS,
@@ -135,6 +136,7 @@ class CKeybindManager {
static void mouse(std::string);
static void bringActiveToTop(std::string);
static void lockGroups(std::string);
+ static void moveIntoGroup(std::string);
friend class CCompositor;
friend class CInputManager;