Browse Source

Fix infill density binding in Recommended mode

CURA-4438

Infill density in Recommended mode should be bound to the correct stack
when the infill extruder is/is not set to a specific extruder.
Lipu Fei 7 years ago
parent
commit
bb476752a4
1 changed files with 34 additions and 0 deletions
  1. 34 0
      resources/qml/SidebarSimple.qml

+ 34 - 0
resources/qml/SidebarSimple.qml

@@ -898,6 +898,40 @@ Item
                 storeIndex: 0
             }
 
+            Binding
+            {
+                target: infillDensity
+                property: "containerStackId"
+                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 activeStackId = Cura.MachineManager.activeStackId;
+
+                    if(machineExtruderCount.properties.value == 1)
+                    {
+                        //Not settable per extruder or there only is global, so we must pick global.
+                        return activeStackId;
+                    }
+                    if(infillInheritStackProvider.properties.limit_to_extruder != null && infillInheritStackProvider.properties.limit_to_extruder >= 0)
+                    {
+                        //We have limit_to_extruder, so pick that stack.
+                        return ExtruderManager.extruderIds[String(infillInheritStackProvider.properties.limit_to_extruder)];
+                    }
+                    return activeStackId;
+                }
+            }
+
+            UM.SettingPropertyProvider
+            {
+                id: infillInheritStackProvider
+                containerStackId: Cura.MachineManager.activeMachineId
+                key: "infill_sparse_density"
+                watchedProperties: [ "limit_to_extruder" ]
+            }
+
             UM.SettingPropertyProvider
             {
                 id: infillDensity