From bb9d0aed5bd11879f5a532e26fc0a91d1a8af714 Mon Sep 17 00:00:00 2001 From: thejch <66577496+thejch@users.noreply.github.com> Date: Fri, 20 Oct 2023 02:53:37 -0700 Subject: [PATCH] compositor: Fix a lack of a check for workspace equality on same monitors in getInDirection (#3625) * prevent movefocus and movewindow from going into main workspace when in special workspace * compare workspace IDs instead * change comparison and make code more readable --- src/Compositor.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index f02f7c668..704ac64ab 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1482,6 +1482,9 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) { if (w.get() == pWindow || !w->m_bIsMapped || w->isHidden() || w->m_bIsFloating || !isWorkspaceVisible(w->m_iWorkspaceID)) continue; + if (pWindow->m_iMonitorID == w->m_iMonitorID && pWindow->m_iWorkspaceID != w->m_iWorkspaceID) + continue; + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID); if (PWORKSPACE->m_bHasFullscreenWindow && !w->m_bIsFullscreen && !w->m_bCreatedOverFullscreen) continue;