diff options
| author | vaxerski <vaxry@vaxry.net> | 2022-08-15 16:12:53 +0200 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2022-08-15 16:12:53 +0200 |
| commit | d2011a4ba9ff73e69e8560fab3b2be989eca1429 (patch) | |
| tree | ad2794c1a036b4062e80e76db0fe515120da520a /src/managers/KeybindManager.cpp | |
| parent | b0b3a5af100d6c68a30230c5b5eafd8087703a99 (diff) | |
added support for window selection in moving to workspace
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index e08be3f1..9939993a 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -584,7 +584,15 @@ void CKeybindManager::fullscreenActive(std::string args) { } void CKeybindManager::moveActiveToWorkspace(std::string args) { - const auto PWINDOW = g_pCompositor->m_pLastWindow; + + CWindow* PWINDOW = nullptr; + + if (args.contains(',')) { + PWINDOW = g_pCompositor->getWindowByRegex(args.substr(args.find_last_of(',') + 1)); + args = args.substr(0, args.find_last_of(',')); + } else { + PWINDOW = g_pCompositor->m_pLastWindow; + } if (!g_pCompositor->windowValidMapped(PWINDOW)) return; @@ -667,6 +675,20 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) { void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) { // hacky, but works lol + CWindow* PWINDOW = nullptr; + + const auto ORIGINALARGS = args; + + if (args.contains(',')) { + PWINDOW = g_pCompositor->getWindowByRegex(args.substr(args.find_last_of(',') + 1)); + args = args.substr(0, args.find_last_of(',')); + } else { + PWINDOW = g_pCompositor->m_pLastWindow; + } + + if (!g_pCompositor->windowValidMapped(PWINDOW)) + return; + int workspaceToMoveTo = 0; std::string workspaceName = ""; @@ -677,14 +699,9 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) { return; } - const auto PWINDOW = g_pCompositor->m_pLastWindow; - - if (!g_pCompositor->windowValidMapped(PWINDOW)) - return; - const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID); - if (workspaceToMoveTo == PMONITOR->activeWorkspace) + if (workspaceToMoveTo == PWINDOW->m_iWorkspaceID) return; // may be null until later! @@ -700,7 +717,7 @@ void CKeybindManager::moveActiveToWorkspaceSilent(std::string args) { g_pEventManager->m_bIgnoreEvents = true; - moveActiveToWorkspace(args); + moveActiveToWorkspace(ORIGINALARGS); PWORKSPACE = g_pCompositor->getWorkspaceByID(workspaceToMoveTo); |
