diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 0eafd33e94..ae9e9d329b 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1061,19 +1061,19 @@ class MachineManager(QObject): # If the machine that is being removed is the currently active machine, set another machine as the active machine. activate_new_machine = (self._global_container_stack and self._global_container_stack.getId() == machine_id) - ExtruderManager.getInstance().removeMachineExtruders(machine_id) + # activate a new machine before removing a machine because this is safer + if activate_new_machine: + machine_stacks = ContainerRegistry.getInstance().findContainerStacks(type = "machine") + other_machine_stacks = [s for s in machine_stacks if s.getId() != machine_id] + if other_machine_stacks: + Application.getInstance().setGlobalContainerStack(other_machine_stacks[0]) + ExtruderManager.getInstance().removeMachineExtruders(machine_id) containers = ContainerRegistry.getInstance().findInstanceContainers(type = "user", machine = machine_id) for container in containers: ContainerRegistry.getInstance().removeContainer(container.getId()) ContainerRegistry.getInstance().removeContainer(machine_id) - if activate_new_machine: - stacks = ContainerRegistry.getInstance().findContainerStacks(type = "machine") - if stacks: - Application.getInstance().setGlobalContainerStack(stacks[0]) - - @pyqtProperty(bool, notify = globalContainerChanged) def hasMaterials(self) -> bool: if self._global_container_stack: