summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2023-02-21 12:13:35 +0000
committervaxerski <vaxry@vaxry.net>2023-02-21 12:13:41 +0000
commita66ef50469c7a347d27a9afec83db1be70be1c84 (patch)
tree124465d218078e960f7bfbe476e4ac25c24ffc14 /src
parent431c74f111285eab41c17d724f335a324b5c833a (diff)
added a lockgroups dispatcher
Diffstat (limited to 'src')
-rw-r--r--src/layout/DwindleLayout.cpp2
-rw-r--r--src/layout/MasterLayout.cpp4
-rw-r--r--src/managers/KeybindManager.cpp9
-rw-r--r--src/managers/KeybindManager.hpp6
4 files changed, 16 insertions, 5 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index 22889efd..4777d31f 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -292,7 +292,7 @@ void CHyprDwindleLayout::onWindowCreatedTiling(CWindow* pWindow) {
}
// if it's a group, add the window
- if (OPENINGON->pWindow->m_sGroupData.pNextWindow) {
+ if (OPENINGON->pWindow->m_sGroupData.pNextWindow && !g_pKeybindManager->m_bGroupsLocked) {
m_lDwindleNodesData.remove(*PNODE);
OPENINGON->pWindow->insertWindowToGroup(pWindow);
diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp
index 5c310ed9..d81093e7 100644
--- a/src/layout/MasterLayout.cpp
+++ b/src/layout/MasterLayout.cpp
@@ -87,7 +87,7 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) {
getNodeFromWindow(g_pCompositor->m_pLastWindow) :
getMasterNodeOnWorkspace(pWindow->m_iWorkspaceID);
- if (OPENINGON && OPENINGON->pWindow->m_sGroupData.pNextWindow && OPENINGON != PNODE) {
+ if (OPENINGON && OPENINGON->pWindow->m_sGroupData.pNextWindow && OPENINGON != PNODE && !g_pKeybindManager->m_bGroupsLocked) {
m_lMasterNodesData.remove(*PNODE);
OPENINGON->pWindow->insertWindowToGroup(pWindow);
@@ -242,7 +242,7 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
if (getNodesOnWorkspace(PWORKSPACE->m_iID) < 2) {
PMASTERNODE->position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition;
PMASTERNODE->size = Vector2D(PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x,
- PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
+ PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
applyNodeDataToWindow(PMASTERNODE);
return;
} else if (PWORKSPACEDATA->orientation == ORIENTATION_LEFT || PWORKSPACEDATA->orientation == ORIENTATION_RIGHT) {
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index b47f8d67..efeb2a07 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -60,6 +60,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["bringactivetotop"] = bringActiveToTop;
m_mDispatchers["focusurgentorlast"] = focusUrgentOrLast;
m_mDispatchers["focuscurrentorlast"] = focusCurrentOrLast;
+ m_mDispatchers["lockgroups"] = lockGroups;
m_tScrollTimer.reset();
}
@@ -2032,3 +2033,11 @@ void CKeybindManager::fakeFullscreenActive(std::string args) {
g_pCompositor->m_pLastWindow->m_bFakeFullscreenState || g_pCompositor->m_pLastWindow->m_bIsFullscreen);
}
}
+
+void CKeybindManager::lockGroups(std::string args) {
+ if (args == "lock" || args.empty() || args == "lockgroups") {
+ g_pKeybindManager->m_bGroupsLocked = true;
+ } else {
+ g_pKeybindManager->m_bGroupsLocked = false;
+ }
+}
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 6e31ccd9..3f2debbf 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -25,8 +25,7 @@ struct SKeybind {
bool shadowed = false;
};
-enum eFocusWindowMode
-{
+enum eFocusWindowMode {
MODE_CLASS_REGEX = 0,
MODE_TITLE_REGEX,
MODE_ADDRESS,
@@ -55,6 +54,8 @@ class CKeybindManager {
wl_event_source* m_pActiveKeybindEventSource = nullptr;
+ bool m_bGroupsLocked = false;
+
std::list<SKeybind> m_lKeybinds;
private:
@@ -133,6 +134,7 @@ class CKeybindManager {
static void pinActive(std::string);
static void mouse(std::string);
static void bringActiveToTop(std::string);
+ static void lockGroups(std::string);
friend class CCompositor;
friend class CInputManager;