diff --git a/src/WorkspaceManager.vala b/src/WorkspaceManager.vala index 93d7f4e4d..87d115aa9 100644 --- a/src/WorkspaceManager.vala +++ b/src/WorkspaceManager.vala @@ -262,8 +262,18 @@ public class Gala.WorkspaceManager : Object { private void cleanup () { unowned Meta.WorkspaceManager manager = wm.get_display ().get_workspace_manager (); - foreach (var workspace in manager.get_workspaces ()) { - maybe_remove_workspace (workspace, null); + bool remove_last = false; + foreach (var workspace in manager.get_workspaces ().copy ()) { + if (Utils.get_n_windows (workspace, true) != 0) { + remove_last = false; + continue; + } + + if (workspace.active) { + remove_last = true; + } else if (workspace.index () != manager.n_workspaces - 1 || remove_last) { + remove_workspace (workspace); + } } } }