diff options
author | Sefa Eyeoglu <[email protected]> | 2024-02-10 00:47:00 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-02-09 23:47:00 +0000 |
commit | 334a0f03ee2f80118418c16cc06005a1fe8cfd60 (patch) | |
tree | 97df9e491777145dfd012240ea0555ea118d8cba | |
parent | 289d4241bea72ebd891e037996ec4ffd356aadc8 (diff) | |
download | Hyprland-334a0f03ee2f80118418c16cc06005a1fe8cfd60.tar.gz Hyprland-334a0f03ee2f80118418c16cc06005a1fe8cfd60.zip |
keybinds: Fix focus not moving along when moving workspace (#4660)
---------
Signed-off-by: Sefa Eyeoglu <[email protected]>
-rw-r--r-- | src/Compositor.cpp | 3 | ||||
-rw-r--r-- | src/helpers/Monitor.cpp | 4 | ||||
-rw-r--r-- | src/helpers/Monitor.hpp | 2 | ||||
-rw-r--r-- | src/managers/KeybindManager.cpp | 8 |
4 files changed, 11 insertions, 6 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 69812482..0d336506 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -2156,7 +2156,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni } Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with existing {}", nextWorkspaceOnMonitorID); - POLDMON->changeWorkspace(nextWorkspaceOnMonitorID); + POLDMON->changeWorkspace(nextWorkspaceOnMonitorID, false, true, true); } // move the workspace @@ -2197,6 +2197,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni if (const auto PWORKSPACE = getWorkspaceByID(pMonitor->activeWorkspace); PWORKSPACE) getWorkspaceByID(pMonitor->activeWorkspace)->startAnim(false, false); + setActiveMonitor(pMonitor); pMonitor->activeWorkspace = pWorkspace->m_iID; g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->ID); diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index f084d3c0..cb69318f 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -571,8 +571,8 @@ void CMonitor::changeWorkspace(CWorkspace* const pWorkspace, bool internal, bool g_pCompositor->updateSuspendedStates(); } -void CMonitor::changeWorkspace(const int& id, bool internal) { - changeWorkspace(g_pCompositor->getWorkspaceByID(id), internal); +void CMonitor::changeWorkspace(const int& id, bool internal, bool noMouseMove, bool noFocus) { + changeWorkspace(g_pCompositor->getWorkspaceByID(id), internal, noMouseMove, noFocus); } void CMonitor::setSpecialWorkspace(CWorkspace* const pWorkspace) { diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp index 43de8d12..d5aba751 100644 --- a/src/helpers/Monitor.hpp +++ b/src/helpers/Monitor.hpp @@ -142,7 +142,7 @@ class CMonitor { bool isMirror(); float getDefaultScale(); void changeWorkspace(CWorkspace* const pWorkspace, bool internal = false, bool noMouseMove = false, bool noFocus = false); - void changeWorkspace(const int& id, bool internal = false); + void changeWorkspace(const int& id, bool internal = false, bool noMouseMove = false, bool noFocus = false); void setSpecialWorkspace(CWorkspace* const pWorkspace); void setSpecialWorkspace(const int& id); void moveTo(const Vector2D& pos); diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index a5419e67..db6bbbbc 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1459,14 +1459,18 @@ void CKeybindManager::exitHyprland(std::string argz) { void CKeybindManager::moveCurrentWorkspaceToMonitor(std::string args) { CMonitor* PMONITOR = g_pCompositor->getMonitorFromString(args); - if (!PMONITOR) + if (!PMONITOR) { + Debug::log(ERR, "Ignoring moveCurrentWorkspaceToMonitor: monitor doesnt exist"); return; + } // get the current workspace const auto PCURRENTWORKSPACE = g_pCompositor->getWorkspaceByID(g_pCompositor->m_pLastMonitor->activeWorkspace); - if (!PCURRENTWORKSPACE) + if (!PCURRENTWORKSPACE) { + Debug::log(ERR, "moveCurrentWorkspaceToMonitor invalid workspace!"); return; + } g_pCompositor->moveWorkspaceToMonitor(PCURRENTWORKSPACE, PMONITOR); } |