diff options
| author | Vaxry <vaxry@vaxry.net> | 2025-12-13 13:54:59 +0000 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2025-12-13 13:55:48 +0000 |
| commit | fd5e790d08ae5504a9604d3537172b2c944b003b (patch) | |
| tree | b9f5449d26cfc3c04510f35a5d1f4f2823cd609f /src/Compositor.cpp | |
| parent | 69db0bcae640410b6c587cb0ffd0c89bc8166ff0 (diff) | |
compositor: return nullptr when cursor is outside of a maximized windows' box
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 57fac42b..d83b93a5 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -996,8 +996,18 @@ PHLWINDOW CCompositor::vectorToWindowUnified(const Vector2D& pos, uint8_t proper const WORKSPACEID WSPID = special ? PMONITOR->activeSpecialWorkspaceID() : PMONITOR->activeWorkspaceID(); const auto PWORKSPACE = getWorkspaceByID(WSPID); - if (PWORKSPACE->m_hasFullscreenWindow && !(properties & Desktop::View::SKIP_FULLSCREEN_PRIORITY) && !ONLY_PRIORITY) - return PWORKSPACE->getFullscreenWindow(); + if (PWORKSPACE->m_hasFullscreenWindow && !(properties & Desktop::View::SKIP_FULLSCREEN_PRIORITY) && !ONLY_PRIORITY) { + const auto FS_WINDOW = PWORKSPACE->getFullscreenWindow(); + + if (!FS_WINDOW) + return nullptr; + + // for maximized windows, don't return a window if we are not directly on it. + if (FS_WINDOW->m_fullscreenState.internal != FSMODE_MAXIMIZED || FS_WINDOW->getWindowBoxUnified(properties).containsPoint(pos)) + return PWORKSPACE->getFullscreenWindow(); + else + return nullptr; + } auto found = floating(false); if (found) |
