core: simplify sanityCheckWorkspaces

This commit is contained in:
Vaxry
2024-04-05 19:32:05 +01:00
parent 4909b0f350
commit 094bce8118
3 changed files with 8 additions and 34 deletions

View File

@@ -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;
}
}