diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-08-25 18:05:08 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-08-25 18:05:08 +0200 |
| commit | 870471dd96724474869d2e648b623c17df12fb57 (patch) | |
| tree | 62b34b8586bb14dab6f64991edf9969cff885caa /src/Compositor.cpp | |
| parent | 23e17700a73324e7e0a5bccb96e426bbb99efe7b (diff) | |
internal: allow opening empty special workspaces
Fixes point 2 of #2596
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; } |
