Browse Source

Make SettingView update its value upon global stack change

CURA-4105

Cleaner way to make SettingView update its value when the global stack
gets changed.
Lipu Fei 7 years ago
parent
commit
cf25515b90
1 changed files with 8 additions and 28 deletions
  1. 8 28
      resources/qml/Settings/SettingView.qml

+ 8 - 28
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