input: ensure seat grabs from exclusive layers can be dismissed (#10418)

This commit is contained in:
outfoxxed 2025-05-17 04:06:48 -07:00 committed by GitHub
parent 2946009006
commit 2aa21625bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -607,6 +607,12 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
foundSurface = nullptr; foundSurface = nullptr;
} }
// Releases any seat grabs after a click outside of them not handled by an earlier case (notably exclusive layers).
if ((m_hardInput || refocus) && g_pSeatManager->m_seatGrab && !foundSurface) {
g_pSeatManager->setGrab(nullptr);
return; // setGrab will refocus
}
g_pSeatManager->setPointerFocus(foundSurface, surfaceLocal); g_pSeatManager->setPointerFocus(foundSurface, surfaceLocal);
g_pSeatManager->sendPointerMotion(time, surfaceLocal); g_pSeatManager->sendPointerMotion(time, surfaceLocal);
} }