From b15803510c67b7b89090c99f03781d9052c959f5 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 20 Apr 2023 00:46:42 +0100 Subject: [PATCH] input: improve mouse release conditions --- src/Compositor.cpp | 3 --- src/managers/KeybindManager.cpp | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 2e67cbde..289fdafb 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -796,8 +796,6 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { } if (!pWindow || !windowValidMapped(pWindow)) { - g_pInputManager->releaseAllMouseButtons(); - const auto PLASTWINDOW = m_pLastWindow; m_pLastWindow = nullptr; @@ -870,7 +868,6 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { // do pointer focus too const auto POINTERLOCAL = g_pInputManager->getMouseCoordsInternal() - pWindow->m_vRealPosition.goalv(); - g_pInputManager->releaseAllMouseButtons(); wlr_seat_pointer_notify_enter(m_sSeat.seat, PWINDOWSURFACE, POINTERLOCAL.x, POINTERLOCAL.y); updateWindowAnimatedDecorationValues(pWindow); diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index d86bec4a..39b0292a 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -770,6 +770,8 @@ void CKeybindManager::changeworkspace(std::string args) { auto pWorkspaceToChangeTo = g_pCompositor->getWorkspaceByID(PCURRENTWORKSPACE->m_sPrevWorkspace.iID); + g_pInputManager->releaseAllMouseButtons(); + if (pWorkspaceToChangeTo) { const auto PMONITORWORKSPACEOWNER = PMONITOR->ID == pWorkspaceToChangeTo->m_iMonitorID ? PMONITOR : g_pCompositor->getMonitorFromID(pWorkspaceToChangeTo->m_iMonitorID); @@ -814,6 +816,8 @@ void CKeybindManager::changeworkspace(std::string args) { return; } + g_pInputManager->releaseAllMouseButtons(); + const auto PMONITORWORKSPACEOWNER = PMONITOR->ID == pWorkspaceToChangeTo->m_iMonitorID ? PMONITOR : g_pCompositor->getMonitorFromID(pWorkspaceToChangeTo->m_iMonitorID); g_pCompositor->setActiveMonitor(PMONITORWORKSPACEOWNER);