diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index a640760471..bc8c806699 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -126,10 +126,6 @@ class BuildVolume(SceneNode): # Therefore this works. self._machine_manager.activeQualityChanged.connect(self._onStackChanged) - # This should also ways work, and it is semantically more correct, - # but it does not update the disallowed areas after material change - self._machine_manager.activeStackChanged.connect(self._onStackChanged) - # Enable and disable extruder self._machine_manager.extruderChanged.connect(self.updateNodeBoundaryCheck) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index fc2f90f1e4..c7dbadf54a 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -42,7 +42,7 @@ class BaseMaterialsModel(ListModel): self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) self._updateExtruderStack() - # Update this model when switching machines, when adding materials or changing their metadata. + # Update this model when switching machines or tabs, when adding materials or changing their metadata. self._machine_manager.activeStackChanged.connect(self._update) ContainerTree.getInstance().materialsChanged.connect(self._materialsListChanged) self._application.getMaterialManagementModel().favoritesChanged.connect(self._update) diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py index c436f94421..da8044addd 100644 --- a/cura/Machines/Models/IntentCategoryModel.py +++ b/cura/Machines/Models/IntentCategoryModel.py @@ -48,7 +48,10 @@ class IntentCategoryModel(ListModel): ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChange) ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChange) - cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeStackChanged.connect(self.update) + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.activeMaterialChanged.connect(self.update) + machine_manager.activeVariantChanged.connect(self.update) + machine_manager.extruderChanged.connect(self.update) self.update() diff --git a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py index 9bf1cc08a8..9e1dfc4949 100644 --- a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py @@ -40,7 +40,8 @@ class QualityProfilesDropDownMenuModel(ListModel): application.globalContainerStackChanged.connect(self._onChange) machine_manager.activeQualityGroupChanged.connect(self._onChange) - machine_manager.activeStackChanged.connect(self._onChange) + machine_manager.activeMaterialChanged.connect(self._onChange) + machine_manager.activeVariantChanged.connect(self._onChange) machine_manager.extruderChanged.connect(self._onChange) self._layer_height_unit = "" # This is cached diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 5985234442..84e5495e7f 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -139,8 +139,8 @@ class MachineManager(QObject): activeVariantChanged = pyqtSignal() activeQualityChanged = pyqtSignal() activeIntentChanged = pyqtSignal() - activeStackChanged = pyqtSignal() # Emitted whenever the active extruder stack is changed (ie: when changing between extruders, changing a profile, but not when changing a value) - extruderChanged = pyqtSignal() + activeStackChanged = pyqtSignal() # Emitted whenever the active extruder stack is changed (ie: when switching the active extruder tab or changing between printers) + extruderChanged = pyqtSignal() # Emitted whenever an extruder is activated or deactivated or the default extruder changes. activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed. activeStackValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed @@ -269,11 +269,7 @@ class MachineManager(QObject): def _onActiveExtruderStackChanged(self) -> None: self.blurSettings.emit() # Ensure no-one has focus. - if self._active_container_stack is not None: - self._active_container_stack.pyqtContainersChanged.disconnect(self.activeStackChanged) # Unplug from the old one. self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if self._active_container_stack is not None: - self._active_container_stack.pyqtContainersChanged.connect(self.activeStackChanged) # Plug into the new one. def __emitChangedSignals(self) -> None: self.activeQualityChanged.emit()