From 09f3999b1e2ad6033c93ed84849188839e335c7f Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Tue, 23 Aug 2022 23:34:36 +0200 Subject: [PATCH] Unfocus first on non-internal ws changes --- src/managers/KeybindManager.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 8d09d650..b1b51dd7 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -496,11 +496,15 @@ void CKeybindManager::changeworkspace(std::string args) { // to a previous workspace. bool isSwitchingToPrevious = false; + bool internal = false; + if (args.find("[internal]") == 0) { workspaceToChangeTo = std::stoi(args.substr(10)); const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(workspaceToChangeTo); if (PWORKSPACE) workspaceName = PWORKSPACE->m_szName; + + internal = true; } else if (args.find("previous") == 0) { const auto PCURRENTWORKSPACE = g_pCompositor->getWorkspaceByID( g_pCompositor->m_pLastMonitor->activeWorkspace); @@ -551,6 +555,10 @@ void CKeybindManager::changeworkspace(std::string args) { // remove constraints g_pInputManager->unconstrainMouse(); + // if it's not internal, we will unfocus to prevent stuck focus + if (!internal) + g_pCompositor->focusWindow(nullptr); + // if it exists, we warp to it if (g_pCompositor->getWorkspaceByID(workspaceToChangeTo)) { const auto PMONITOR = g_pCompositor->getMonitorFromID(g_pCompositor->getWorkspaceByID(workspaceToChangeTo)->m_iMonitorID);