summaryrefslogtreecommitdiff
path: root/src/desktop/Window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/desktop/Window.cpp')
-rw-r--r--src/desktop/Window.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp
index 9f5f9dd3..c478b766 100644
--- a/src/desktop/Window.cpp
+++ b/src/desktop/Window.cpp
@@ -1356,7 +1356,7 @@ void CWindow::activate(bool force) {
g_pCompositor->changeWindowZOrder(m_pSelf.lock(), true);
g_pCompositor->focusWindow(m_pSelf.lock());
- g_pCompositor->warpCursorTo(middle());
+ warpCursor();
}
void CWindow::onUpdateState() {
@@ -1530,3 +1530,14 @@ void CWindow::onX11Configure(CBox box) {
g_pHyprRenderer->damageWindow(m_pSelf.lock());
}
+
+void CWindow::warpCursor() {
+ static auto PERSISTENTWARPS = CConfigValue<Hyprlang::INT>("cursor:persistent_warps");
+ const auto coords = m_vRelativeCursorCoordsOnLastWarp;
+ m_vRelativeCursorCoordsOnLastWarp.x = -1; // reset m_vRelativeCursorCoordsOnLastWarp
+
+ if (*PERSISTENTWARPS && coords.x > 0 && coords.y > 0 && coords < m_vSize) // don't warp cursor outside the window
+ g_pCompositor->warpCursorTo(m_vPosition + coords);
+ else
+ g_pCompositor->warpCursorTo(middle());
+}