summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp18
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;
}