core: fix workspace persistence tracking (#11239)

This commit is contained in:
Vaxry 2025-07-27 18:46:23 +02:00 committed by GitHub
parent 5d4b4ecbfb
commit c63d0003a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 140 additions and 10 deletions

View file

@ -44,7 +44,7 @@ void CWorkspace::init(PHLWORKSPACE self) {
m_inert = false;
const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(self);
m_persistent = WORKSPACERULE.isPersistent;
setPersistent(WORKSPACERULE.isPersistent);
if (self->m_wasCreatedEmpty)
if (auto cmd = WORKSPACERULE.onCreatedEmptyRunCmd)
@ -639,7 +639,7 @@ void CWorkspace::rename(const std::string& name) {
m_name = name;
const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(m_self.lock());
m_persistent = WORKSPACERULE.isPersistent;
setPersistent(WORKSPACERULE.isPersistent);
if (WORKSPACERULE.isPersistent)
g_pCompositor->ensurePersistentWorkspacesPresent(std::vector<SWorkspaceRule>{WORKSPACERULE}, m_self.lock());
@ -658,3 +658,19 @@ void CWorkspace::updateWindows() {
w->updateDynamicRules();
}
}
void CWorkspace::setPersistent(bool persistent) {
if (m_persistent == persistent)
return;
m_persistent = persistent;
if (persistent)
m_selfPersistent = m_self.lock();
else
m_selfPersistent.reset();
}
bool CWorkspace::isPersistent() {
return m_persistent;
}