diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 9f3009e258..2f0b1594cd 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -603,6 +603,15 @@ class CuraApplication(QtApplication): @pyqtSlot() def closeApplication(self) -> None: Logger.log("i", "Close application") + + # Workaround: Before closing the window, remove the global stack. + # This is necessary because as the main window gets closed, hundreds of QML elements get updated which often + # request the global stack. However as the Qt-side of the Machine Manager is being dismantled, the conversion of + # the Global Stack to a QObject fails. + # If instead we first take down the global stack, PyQt will just convert `None` to `null` which succeeds, and + # the QML code then gets `null` as the global stack and can deal with that as it deems fit. + self.getMachineManager().setActiveMachine(None) + main_window = self.getMainWindow() if main_window is not None: main_window.close()