aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSefa Eyeoglu <[email protected]>2024-02-10 00:47:00 +0100
committerGitHub <[email protected]>2024-02-09 23:47:00 +0000
commit334a0f03ee2f80118418c16cc06005a1fe8cfd60 (patch)
tree97df9e491777145dfd012240ea0555ea118d8cba
parent289d4241bea72ebd891e037996ec4ffd356aadc8 (diff)
downloadHyprland-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.cpp3
-rw-r--r--src/helpers/Monitor.cpp4
-rw-r--r--src/helpers/Monitor.hpp2
-rw-r--r--src/managers/KeybindManager.cpp8
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);
}