diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4b4f743a77..ce09346a34 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -409,12 +409,10 @@ class CuraApplication(QtApplication): @pyqtSlot(str) def discardOrKeepProfileChangesClosed(self, option): - self.getMachineManager().activeQualityChanged.emit() if option == "discard": global_stack = self.getGlobalContainerStack() for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): extruder.getTop().clear() - global_stack.getTop().clear() # if the user decided to keep settings then the user settings should be re-calculated and validated for errors @@ -423,7 +421,6 @@ class CuraApplication(QtApplication): global_stack = self.getGlobalContainerStack() for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): user_extruder_container = extruder.getTop() - if user_extruder_container: user_extruder_container.update() @@ -431,6 +428,9 @@ class CuraApplication(QtApplication): if user_global_container: user_global_container.update() + # notify listeners that quality has changed (after user selected discard or keep) + self.getMachineManager().activeQualityChanged.emit() + @pyqtSlot(int) def messageBoxClosed(self, button): if self._message_box_callback: diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 0db07485aa..6438453043 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -815,6 +815,7 @@ class MachineManager(QObject): # \param quality_id The quality_id of either a quality or a quality_changes @pyqtSlot(str) def setActiveQuality(self, quality_id: str): + print("set active quality") with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self.blurSettings.emit() @@ -858,10 +859,9 @@ class MachineManager(QObject): for stack in name_changed_connect_stacks: stack.nameChanged.connect(self._onQualityNameChanged) - has_user_interaction = False if self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1: # Show the keep/discard user settings dialog - has_user_interaction = Application.getInstance().discardOrKeepProfileChanges() + Application.getInstance().discardOrKeepProfileChanges() else: # If the user doesn't have any of adjusted settings then slicing will be triggered by emit() # Send emits that are postponed in replaceContainer. @@ -869,7 +869,6 @@ class MachineManager(QObject): for setting_info in new_quality_settings_list: setting_info["stack"].sendPostponedEmits() - if not has_user_interaction: self.activeQualityChanged.emit() ## Determine the quality and quality changes settings for the current machine for a quality name.