summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-08-15 16:12:53 +0200
committervaxerski <vaxry@vaxry.net>2022-08-15 16:12:53 +0200
commitd2011a4ba9ff73e69e8560fab3b2be989eca1429 (patch)
treead2794c1a036b4062e80e76db0fe515120da520a /src/managers/KeybindManager.cpp
parentb0b3a5af100d6c68a30230c5b5eafd8087703a99 (diff)
added support for window selection in moving to workspace
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp33
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);