From 90fe7c6569e3ea900cdc664a13368e52c986165d Mon Sep 17 00:00:00 2001 From: fazzi <18248986+fxzzi@users.noreply.github.com> Date: Sun, 3 May 2026 15:00:16 +0100 Subject: [PATCH] InputManager: add guards to confineToRegion to avoid issues (#14269) --- src/managers/input/InputManager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index 2f9b64a3b..b6f384337 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -266,11 +266,17 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse, st // constraints auto confineToRegion = [&](const CRegion& rg, SP surf) { + if (!surf) + return; + const auto CLOSEST = rg.closestPoint(mouseCoords); const auto BOX = surf->getSurfaceBoxGlobal(); const auto WINDOW = Desktop::View::CWindow::fromView(surf->view()); const auto CLOSESTLOCAL = (CLOSEST - (BOX.has_value() ? BOX->pos() : Vector2D{})) * (WINDOW ? WINDOW->m_X11SurfaceScaledBy : 1.0); + if (g_pSeatManager->m_state.pointerFocus != surf->resource()) + g_pSeatManager->setPointerFocus(surf->resource(), CLOSESTLOCAL); + g_pCompositor->warpCursorTo(CLOSEST, true); g_pSeatManager->sendPointerMotion(time, CLOSESTLOCAL); PROTO::relativePointer->sendRelativeMotion(sc(time) * 1000, {}, {});