summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-08-25 18:05:08 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-08-25 18:05:08 +0200
commit870471dd96724474869d2e648b623c17df12fb57 (patch)
tree62b34b8586bb14dab6f64991edf9969cff885caa /src/Compositor.cpp
parent23e17700a73324e7e0a5bccb96e426bbb99efe7b (diff)
internal: allow opening empty special workspaces
Fixes point 2 of #2596
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;
}