From 8a7ce59ad405adee5d701b6a5be67dd45b5a24bd Mon Sep 17 00:00:00 2001 From: UserSv4 Date: Fri, 11 Aug 2023 19:27:09 +0400 Subject: [PATCH] internal: Fix grouped windows not being properly focused on activation (#2925) * Fix grouped windows not being properly focused on activation This bug could happen if you: 1. Open two Chromium windows in a single group 2. Open some tabs in both of the windows 3. Using tabs search (Ctrl+Shift+A) try to switch to a tab in the second window from the first one. When this happens any window focus would be lost (hyprctl activewindow starts to output "Invalid") and also the mouse cursor would become centered relatively to the second window. * Update Compositor.cpp --- src/Compositor.cpp | 5 +++++ src/managers/KeybindManager.cpp | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index f2fcceff..ab38bd09 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -832,6 +832,11 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) { return; } + if (pWindow && pWindow->isHidden() && pWindow->m_sGroupData.pNextWindow) { + // grouped, change the current to us + pWindow->setGroupCurrent(pWindow); + } + if (!pWindow || !windowValidMapped(pWindow)) { const auto PLASTWINDOW = m_pLastWindow; m_pLastWindow = nullptr; diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index f54e1e5f..6956c697 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1712,11 +1712,6 @@ void CKeybindManager::focusWindow(std::string regexp) { changeworkspace(PWORKSPACE->getConfigName()); } - if (PWINDOW->isHidden() && PWINDOW->m_sGroupData.pNextWindow) { - // grouped, change the current to us - PWINDOW->setGroupCurrent(PWINDOW); - } - g_pCompositor->focusWindow(PWINDOW); const auto MIDPOINT = PWINDOW->m_vRealPosition.goalv() + PWINDOW->m_vRealSize.goalv() / 2.f;