input: avoid rampant refocuses on popups

This commit is contained in:
Vaxry 2024-02-15 01:24:40 +00:00
parent ef490965a2
commit 3cca36e773

View file

@ -422,8 +422,16 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
return; // don't enter any new surfaces return; // don't enter any new surfaces
} else { } else {
if (allowKeyboardRefocus && ((FOLLOWMOUSE != 3 && (*PMOUSEREFOCUS || m_pLastMouseFocus != pFoundWindow)) || refocus)) { if (allowKeyboardRefocus && ((FOLLOWMOUSE != 3 && (*PMOUSEREFOCUS || m_pLastMouseFocus != pFoundWindow)) || refocus)) {
m_pLastMouseFocus = pFoundWindow; if (m_pLastMouseFocus != pFoundWindow || g_pCompositor->m_pLastFocus != foundSurface) {
g_pCompositor->focusWindow(pFoundWindow, foundSurface); m_pLastMouseFocus = pFoundWindow;
// TODO: this looks wrong. When over a popup, it constantly is switching.
// Temp fix until that's figured out. Otherwise spams windowrule lookups and other shit.
if (m_pLastMouseFocus != pFoundWindow)
g_pCompositor->focusWindow(pFoundWindow, foundSurface);
else
g_pCompositor->focusSurface(foundSurface, pFoundWindow);
}
} }
} }