From 45b1e6dc5ee42b01a377bd875181bc621c72f914 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 1 May 2023 15:39:08 +0100 Subject: keybinds: simulate workspace switch on focusWindow to another ws --- src/managers/KeybindManager.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/managers/KeybindManager.cpp') diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 49722142..27de2b4e 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1145,7 +1145,7 @@ void CKeybindManager::moveActiveTo(std::string args) { const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PMONITORTOCHANGETO->activeWorkspace); - moveActiveToWorkspace(PMONITORTOCHANGETO->activeWorkspace < 0 ? "name:" + PWORKSPACE->m_szName : std::to_string(PMONITORTOCHANGETO->activeWorkspace)); + moveActiveToWorkspace(PWORKSPACE->getConfigName()); } void CKeybindManager::toggleGroup(std::string args) { @@ -1659,6 +1659,16 @@ void CKeybindManager::focusWindow(std::string regexp) { Debug::log(LOG, "Focusing to window name: %s", PWINDOW->m_szTitle.c_str()); + if (g_pCompositor->m_pLastMonitor->activeWorkspace != PWINDOW->m_iWorkspaceID) { + Debug::log(LOG, "Fake executing workspace to move focus"); + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID); + if (!PWORKSPACE) { + Debug::log(ERR, "BUG THIS: null workspace in focusWindow"); + return; + } + changeworkspace(PWORKSPACE->getConfigName()); + } + if (PWINDOW->isHidden() && PWINDOW->m_sGroupData.pNextWindow) { // grouped, change the current to us PWINDOW->setGroupCurrent(PWINDOW); -- cgit v1.2.3