From 870471dd96724474869d2e648b623c17df12fb57 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 25 Aug 2023 18:05:08 +0200 Subject: internal: allow opening empty special workspaces Fixes point 2 of #2596 --- src/Compositor.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/Compositor.cpp') diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 511ae3bc..ef611d8d 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1145,14 +1145,20 @@ void CCompositor::sanityCheckWorkspaces() { const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace((*it)->m_iID); - if ((*it)->m_bIsSpecialWorkspace && WINDOWSONWORKSPACE == 0) { - getMonitorFromID((*it)->m_iMonitorID)->setSpecialWorkspace(nullptr); + if ((WINDOWSONWORKSPACE == 0 && !isWorkspaceVisible((*it)->m_iID))) { - it = m_vWorkspaces.erase(it); - continue; - } + if ((*it)->m_bIsSpecialWorkspace) { + if ((*it)->m_fAlpha.fl() > 0.f /* don't abruptly end the fadeout */) { + ++it; + continue; + } + + const auto PMONITOR = getMonitorFromID((*it)->m_iMonitorID); + + if (PMONITOR && PMONITOR->specialWorkspaceID == (*it)->m_iID) + PMONITOR->setSpecialWorkspace(nullptr); + } - if ((WINDOWSONWORKSPACE == 0 && !isWorkspaceVisible((*it)->m_iID))) { it = m_vWorkspaces.erase(it); continue; } -- cgit v1.2.3