summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-13 21:09:50 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-13 21:09:50 +0100
commit41c7d896e38896916f0762acbc7f811a00240b4f (patch)
treeccffcb0e833c38d59f0d68e3fb223b792d83b12a /src/Compositor.cpp
parent33d06fb0e5033412638edec5a8d78cbec844132a (diff)
internal: prevent premature destroy in moveworkspace
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp8
1 files changed, 8 insertions, 0 deletions
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;