summaryrefslogtreecommitdiff
path: root/src/managers/input/InputManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/input/InputManager.cpp')
-rw-r--r--src/managers/input/InputManager.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 7ca8dc00..6c3b3699 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -546,8 +546,12 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
// 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.lock() != pFoundWindow || g_pCompositor->m_pLastWindow.lock() != pFoundWindow) {
- if (m_fMousePosDelta > *PFOLLOWMOUSETHRESHOLD || refocus)
- g_pCompositor->focusWindow(pFoundWindow, foundSurface);
+ if (m_fMousePosDelta > *PFOLLOWMOUSETHRESHOLD || refocus) {
+ const bool hasNoFollowMouse = pFoundWindow && pFoundWindow->m_sWindowData.noFollowMouse.valueOrDefault();
+
+ if (refocus || !hasNoFollowMouse)
+ g_pCompositor->focusWindow(pFoundWindow, foundSurface);
+ }
} else
g_pCompositor->focusSurface(foundSurface, pFoundWindow);
}