From 4db773b1e7d51cd008ae24f4c457710e8360fef7 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 2 Apr 2022 13:02:16 +0200 Subject: Fix popups focus on native GDK --- src/managers/AnimationManager.cpp | 2 +- src/managers/InputManager.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src/managers') diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp index de83f023..c165b843 100644 --- a/src/managers/AnimationManager.cpp +++ b/src/managers/AnimationManager.cpp @@ -23,7 +23,7 @@ void CAnimationManager::tick() { for (auto& w : g_pCompositor->m_lWindows) { // process the borders - const auto& COLOR = g_pXWaylandManager->getWindowSurface(&w) == g_pCompositor->m_pLastFocus ? BORDERACTIVECOL : BORDERINACTIVECOL; + const auto& COLOR = g_pCompositor->isWindowActive(&w) ? BORDERACTIVECOL : BORDERINACTIVECOL; if (BORDERSENABLED) { if (!deltazero(COLOR, w.m_cRealBorderColor)) { diff --git a/src/managers/InputManager.cpp b/src/managers/InputManager.cpp index e7723fbb..4c66c7bf 100644 --- a/src/managers/InputManager.cpp +++ b/src/managers/InputManager.cpp @@ -68,9 +68,12 @@ void CInputManager::mouseMoveUnified(uint32_t time) { // then windows const auto PWINDOWIDEAL = g_pCompositor->vectorToWindowIdeal(mouseCoords); if (!foundSurface && PWINDOWIDEAL) { - foundSurface = g_pXWaylandManager->getWindowSurface(PWINDOWIDEAL); - if (foundSurface) + if (!PWINDOWIDEAL->m_bIsX11) { + foundSurface = g_pCompositor->vectorWindowToSurface(mouseCoords, PWINDOWIDEAL, surfaceCoords); + } else { + foundSurface = g_pXWaylandManager->getWindowSurface(PWINDOWIDEAL); surfacePos = PWINDOWIDEAL->m_vRealPosition; + } } // then surfaces below @@ -97,7 +100,7 @@ void CInputManager::mouseMoveUnified(uint32_t time) { wlr_seat_pointer_notify_enter(g_pCompositor->m_sSeat.seat, foundSurface, surfaceLocal.x, surfaceLocal.y); wlr_seat_pointer_notify_motion(g_pCompositor->m_sSeat.seat, time, surfaceLocal.x, surfaceLocal.y); - g_pCompositor->focusSurface(foundSurface); + g_pCompositor->focusSurface(foundSurface, PWINDOWIDEAL ? PWINDOWIDEAL : nullptr); g_pLayoutManager->getCurrentLayout()->onMouseMove(getMouseCoordsInternal()); } @@ -109,6 +112,8 @@ void CInputManager::onMouseButton(wlr_pointer_button_event* e) { switch (e->state) { case WLR_BUTTON_PRESSED: + refocus(); + if ((e->button == BTN_LEFT || e->button == BTN_RIGHT) && wlr_keyboard_get_modifiers(PKEYBOARD) == (uint32_t)g_pConfigManager->getInt("general:main_mod_internal")) { currentlyDraggedWindow = g_pCompositor->windowFloatingFromCursor(); dragButton = e->button; -- cgit v1.2.3