From 41c7d896e38896916f0762acbc7f811a00240b4f Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 13 Apr 2023 21:09:50 +0100 Subject: internal: prevent premature destroy in moveworkspace --- src/Compositor.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/Compositor.cpp') diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 294ba78e..a2a82b4e 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1090,6 +1090,10 @@ CWorkspace* CCompositor::getWorkspaceByID(const int& id) { void CCompositor::sanityCheckWorkspaces() { auto it = m_vWorkspaces.begin(); while (it != m_vWorkspaces.end()) { + + if ((*it)->m_bIndestructible) + continue; + const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace((*it)->m_iID); if ((*it)->m_bIsSpecialWorkspace && WINDOWSONWORKSPACE == 0) { @@ -1884,9 +1888,13 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, CMonitor* pMoni Debug::log(LOG, "moveWorkspaceToMonitor: Plugging gap with existing %d", nextWorkspaceOnMonitorID); + pWorkspace->m_bIndestructible = true; // so that changeworkspace doesn't yeet it if it's empty + g_pKeybindManager->focusMonitor(std::to_string(POLDMON->ID)); g_pKeybindManager->changeworkspace(std::to_string(nextWorkspaceOnMonitorID)); + pWorkspace->m_bIndestructible = false; + // move the workspace pWorkspace->m_iMonitorID = pMonitor->ID; -- cgit v1.2.3