From c63d0003a1e5155248695f19778f815a8ad34c67 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:46:23 +0200 Subject: core: fix workspace persistence tracking (#11239) --- src/desktop/Workspace.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/desktop/Workspace.cpp') diff --git a/src/desktop/Workspace.cpp b/src/desktop/Workspace.cpp index 49882534..c14d6e38 100644 --- a/src/desktop/Workspace.cpp +++ b/src/desktop/Workspace.cpp @@ -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{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; +} -- cgit v1.2.3