mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-05-19 00:20:23 -07:00
parent
c19f383685
commit
705b97c4ac
@ -201,7 +201,6 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
|
||||
Vector2D surfacePos = Vector2D(-1337, -1337);
|
||||
PHLWINDOW pFoundWindow;
|
||||
PHLLS pFoundLayerSurface;
|
||||
bool sendExternalMouseEvents = false;
|
||||
|
||||
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.
|
||||
if (!PROTO::data->dndActive() && !m_currentlyHeldButtons.empty() && g_pCompositor->m_lastFocus && g_pCompositor->m_lastFocus->m_mapped &&
|
||||
g_pSeatManager->m_state.pointerFocus && !m_hardInput) {
|
||||
foundSurface = g_pSeatManager->m_state.pointerFocus.lock();
|
||||
sendExternalMouseEvents = true;
|
||||
foundSurface = g_pSeatManager->m_state.pointerFocus.lock();
|
||||
|
||||
// IME popups aren't desktop-like elements
|
||||
// TODO: make them.
|
||||
@ -600,19 +598,6 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
|
||||
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->sendPointerMotion(time, surfaceLocal);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user