diff --git a/cura/Backups/Backup.py b/cura/Backups/Backup.py index 3cdcfa8e23..866a6269bb 100644 --- a/cura/Backups/Backup.py +++ b/cura/Backups/Backup.py @@ -34,6 +34,9 @@ class Backup: Logger.log("d", "Creating backup for Cura %s, using folder %s", cura_release, version_data_dir) + # Ensure all current settings are saved. + CuraApplication.getInstance().saveSettings() + # We're using an easy to parse filename for when we're restoring edge cases: # TIMESTAMP.backup.VERSION.cura.zip archive = self._makeArchive(version_data_dir) diff --git a/cura/Backups/BackupsManager.py b/cura/Backups/BackupsManager.py index 55430126dd..1f8c706eee 100644 --- a/cura/Backups/BackupsManager.py +++ b/cura/Backups/BackupsManager.py @@ -44,7 +44,8 @@ class BackupsManager: restored = backup.restore() if restored: # At this point, Cura will need to restart for the changes to take effect. - CuraApplication.getInstance().windowClosed() + # We don't want to store the data at this point as that would override the just-restored backup. + CuraApplication.getInstance().windowClosed(safe_data=False) def _disableAutoSave(self): """Here we try to disable the auto-save plugin as it might interfere with restoring a backup.""" diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index c8adfbc93b..d26d2ae3f3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -497,10 +497,10 @@ class CuraApplication(QtApplication): ## Cura has multiple locations where instance containers need to be saved, so we need to handle this differently. # # Note that the AutoSave plugin also calls this method. - def saveSettings(self): - if not self.started: # Do not do saving during application start + def saveSettings(self, safe_data: bool = True): + if not self.started or not safe_data: + # Do not do saving during application start or when data should not be safed on quit. return - ContainerRegistry.getInstance().saveDirtyContainers() def saveStack(self, stack):