input: revert #10416 and #10418

fixes #10451
This commit is contained in:
Vaxry 2025-05-17 19:43:12 +02:00
parent c19f383685
commit 705b97c4ac
No known key found for this signature in database
GPG Key ID: 665806380871D640

View File

@ -201,7 +201,6 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
Vector2D surfacePos = Vector2D(-1337, -1337); Vector2D surfacePos = Vector2D(-1337, -1337);
PHLWINDOW pFoundWindow; PHLWINDOW pFoundWindow;
PHLLS pFoundLayerSurface; PHLLS pFoundLayerSurface;
bool sendExternalMouseEvents = false;
EMIT_HOOK_EVENT_CANCELLABLE("mouseMove", MOUSECOORDSFLOORED); EMIT_HOOK_EVENT_CANCELLABLE("mouseMove", MOUSECOORDSFLOORED);
@ -298,8 +297,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
// and we're not dnd-ing, don't refocus. Keep focus on last surface. // and we're not dnd-ing, don't refocus. Keep focus on last surface.
if (!PROTO::data->dndActive() && !m_currentlyHeldButtons.empty() && g_pCompositor->m_lastFocus && g_pCompositor->m_lastFocus->m_mapped && if (!PROTO::data->dndActive() && !m_currentlyHeldButtons.empty() && g_pCompositor->m_lastFocus && g_pCompositor->m_lastFocus->m_mapped &&
g_pSeatManager->m_state.pointerFocus && !m_hardInput) { g_pSeatManager->m_state.pointerFocus && !m_hardInput) {
foundSurface = g_pSeatManager->m_state.pointerFocus.lock(); foundSurface = g_pSeatManager->m_state.pointerFocus.lock();
sendExternalMouseEvents = true;
// IME popups aren't desktop-like elements // IME popups aren't desktop-like elements
// TODO: make them. // TODO: make them.
@ -600,19 +598,6 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
m_lastFocusOnLS = true; m_lastFocusOnLS = true;
} }
// Don't send events outside of the surface unless holding a mouse button,
// except for X11 surfaces which are always sent events in case of potential breakage.
if (!sendExternalMouseEvents && foundSurface && (!pFoundWindow || !pFoundWindow->m_isX11)) {
if (!foundSurface->at(surfaceLocal, true).first)
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);
} }