summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index eb07850c..14fadf02 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1,6 +1,7 @@
#include "../config/ConfigValue.hpp"
#include "../devices/IKeyboard.hpp"
#include "../managers/SeatManager.hpp"
+#include "../protocols/LayerShell.hpp"
#include "../protocols/ShortcutsInhibit.hpp"
#include "../render/decorations/CHyprGroupBarDecoration.hpp"
#include "KeybindManager.hpp"
@@ -1087,6 +1088,8 @@ void CKeybindManager::changeworkspace(std::string args) {
if (!PMONITORWORKSPACEOWNER)
return;
+ updateRelativeCursorCoords();
+
g_pCompositor->setActiveMonitor(PMONITORWORKSPACEOWNER);
if (BISWORKSPACECURRENT) {
@@ -1115,6 +1118,16 @@ void CKeybindManager::changeworkspace(std::string args) {
else
g_pInputManager->simulateMouseMovement();
}
+
+ const static auto PWARPONWORKSPACECHANGE = CConfigValue<Hyprlang::INT>("cursor:warp_on_change_workspace");
+
+ if (*PWARPONWORKSPACECHANGE) {
+ auto PLAST = pWorkspaceToChangeTo->getLastFocusedWindow();
+ auto HLSurface = CWLSurface::fromResource(g_pSeatManager->state.pointerFocus.lock());
+
+ if (PLAST && (!HLSurface || HLSurface->getWindow()))
+ PLAST->warpCursor();
+ }
}
void CKeybindManager::fullscreenActive(std::string args) {