summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
authoralaricljs <me@mooluv.com>2023-09-21 17:18:26 -0400
committerGitHub <noreply@github.com>2023-09-21 22:18:26 +0100
commite4ddfcfa0c944d0851feb9a359e6a224641060f7 (patch)
tree34933ec0377bced94a2924ff40c5f54dfd4a246f /src/managers/KeybindManager.cpp
parentd41a91e050b242e53e7590e7b9267527f039b9f4 (diff)
keybinds: implement pushactivetobottom dispacher (#3217)
Co-authored-by: Leeman <lstrout@enlj.com>
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 992e15b3..0703ba2e 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -63,6 +63,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["pin"] = pinActive;
m_mDispatchers["mouse"] = mouse;
m_mDispatchers["bringactivetotop"] = bringActiveToTop;
+ m_mDispatchers["alterzorder"] = alterZOrder;
m_mDispatchers["focusurgentorlast"] = focusUrgentOrLast;
m_mDispatchers["focuscurrentorlast"] = focusCurrentOrLast;
m_mDispatchers["lockgroups"] = lockGroups;
@@ -1910,7 +1911,32 @@ void CKeybindManager::mouse(std::string args) {
void CKeybindManager::bringActiveToTop(std::string args) {
if (g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow->m_bIsFloating)
- g_pCompositor->moveWindowToTop(g_pCompositor->m_pLastWindow);
+ g_pCompositor->changeWindowZOrder(g_pCompositor->m_pLastWindow, true);
+}
+
+void CKeybindManager::alterZOrder(std::string args) {
+ const auto WINDOWREGEX = args.substr(args.find_first_of(',') + 1);
+ const auto POSITION = args.substr(0, args.find_first_of(','));
+ auto PWINDOW = g_pCompositor->getWindowByRegex(WINDOWREGEX);
+
+ if (!PWINDOW && g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow->m_bIsFloating)
+ PWINDOW = g_pCompositor->m_pLastWindow;
+
+ if (!PWINDOW) {
+ Debug::log(ERR, "alterZOrder: no window");
+ return;
+ }
+
+ if (POSITION == "top")
+ g_pCompositor->changeWindowZOrder(PWINDOW, 1);
+ else if (POSITION == "bottom")
+ g_pCompositor->changeWindowZOrder(PWINDOW, 0);
+ else {
+ Debug::log(ERR, "alterZOrder: bad position: %s", POSITION);
+ return;
+ }
+
+ g_pInputManager->simulateMouseMovement();
}
void CKeybindManager::fakeFullscreenActive(std::string args) {