diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-04-05 19:32:05 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-04-05 19:43:51 +0100 |
| commit | 094bce811831675b03939e4a2d527998850c906d (patch) | |
| tree | 56bcdb22e52547f07418c0cff11ad15af998e635 /src/Compositor.cpp | |
| parent | 4909b0f350f9d3b07a95c62e3ed51981f332b98f (diff) | |
core: simplify sanityCheckWorkspaces
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 37 |
1 files changed, 3 insertions, 34 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 5c1092ec..43473c2c 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1256,43 +1256,12 @@ PHLWORKSPACE CCompositor::getWorkspaceByID(const int& id) { void CCompositor::sanityCheckWorkspaces() { auto it = m_vWorkspaces.begin(); while (it != m_vWorkspaces.end()) { - - const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(*it); - if (WORKSPACERULE.isPersistent) { - ++it; + // If ref == 1, only the compositor holds a ref, which means it's inactive and has no mapped windows. + if (!(*it)->m_bPersistent && it->use_count() == 1) { + it = m_vWorkspaces.erase(it); continue; } - const auto& WORKSPACE = *it; - const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace(WORKSPACE->m_iID); - - if (WINDOWSONWORKSPACE == 0) { - if (!isWorkspaceVisible(WORKSPACE)) { - - if (WORKSPACE->m_bIsSpecialWorkspace) { - if (WORKSPACE->m_fAlpha.value() > 0.f /* don't abruptly end the fadeout */) { - ++it; - continue; - } - - const auto PMONITOR = getMonitorFromID(WORKSPACE->m_iMonitorID); - - if (PMONITOR && PMONITOR->activeSpecialWorkspace == WORKSPACE) - PMONITOR->setSpecialWorkspace(nullptr); - } - - it->get()->markInert(); - it = m_vWorkspaces.erase(it); - continue; - } - if (!WORKSPACE->m_bOnCreatedEmptyExecuted) { - if (auto cmd = WORKSPACERULE.onCreatedEmptyRunCmd) - g_pKeybindManager->spawn(*cmd); - - WORKSPACE->m_bOnCreatedEmptyExecuted = true; - } - } - ++it; } } |
