diff options
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
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; } |
