diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index af8c86cbc4..485d364b2d 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -238,10 +238,16 @@ Item when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0); value: { + // associate this binding with Cura.MachineManager.activeMachineId in the beginning so this + // binding will be triggered when activeMachineId is changed too. + // Otherwise, if this value only depends on the extruderIds, it won't get updated when the + // machine gets changed. + var activeMachineId = Cura.MachineManager.activeMachineId; + if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1) { //Not settable per extruder or there only is global, so we must pick global. - return Cura.MachineManager.activeMachineId; + return activeMachineId; } if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) { @@ -254,7 +260,7 @@ Item return ExtruderManager.activeExtruderStackId; } //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. - return Cura.MachineManager.activeMachineId; + return activeMachineId; } } @@ -266,32 +272,6 @@ Item containerStackId: Cura.MachineManager.activeMachineId key: model.key watchedProperties: [ "limit_to_extruder" ] - - // When the activeMachineId got changed, the binding for limit_to_extruder which updates - // provider.containerStackId doesn't get triggered. This handle makes sure that will happen. - onContainerStackIdChanged: - { - if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1) - { - //Not settable per extruder or there only is global, so we must pick global. - provider.containerStackId = Cura.MachineManager.activeMachineId; - return; - } - if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) - { - //We have limit_to_extruder, so pick that stack. - provider.containerStackId = ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; - return; - } - if(ExtruderManager.activeExtruderStackId) - { - //We're on an extruder tab. Pick the current extruder. - provider.containerStackId = ExtruderManager.activeExtruderStackId; - return; - } - //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. - provider.containerStackId = Cura.MachineManager.activeMachineId; - } } UM.SettingPropertyProvider