diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c87bb576d0..ea9ee507ba 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -393,12 +393,19 @@ Item anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 * screenScaleFactor anchors.right: parent.right - text: infillSlider.value + "%" + text: parseInt(infillDensity.properties.value) + "%" horizontalAlignment: Text.AlignLeft color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") } + // We use a binding to make sure that after manually setting infillSlider.value it is still bound to the property provider + Binding { + target: infillSlider + property: "value" + value: parseInt(infillDensity.properties.value) + } + Slider { id: infillSlider @@ -413,7 +420,7 @@ Item minimumValue: 0 maximumValue: 100 - stepSize: (parseInt(infillDensity.properties.value) % 10 == 0) ? 10 : 1 + stepSize: 1 tickmarksEnabled: true // disable slider when gradual support is enabled @@ -423,8 +430,20 @@ Item value: parseInt(infillDensity.properties.value) onValueChanged: { + + // Don't round the value if it's already the same + if (parseInt(infillDensity.properties.value) == infillSlider.value) { + return + } + + // Round the slider value to the nearest multiple of 10 (simulate step size of 10) + var roundedSliderValue = Math.round(infillSlider.value / 10) * 10 + + // Update the slider value to represent the rounded value + infillSlider.value = roundedSliderValue + // Explicitly cast to string to make sure the value passed to Python is an integer. - infillDensity.setPropertyValue("value", String(parseInt(infillSlider.value))) + infillDensity.setPropertyValue("value", String(roundedSliderValue)) } style: SliderStyle @@ -454,7 +473,7 @@ Item // check if a tick should be shown based on it's index and wether the infill density is a multiple of 10 (slider step size) function shouldShowTick (index) { - if ((parseInt(infillDensity.properties.value) % 10 == 0) || (index % 10 == 0)) { + if (index % 10 == 0) { return true } return false @@ -548,11 +567,17 @@ Item hoverEnabled: true enabled: true + property var previousInfillDensity: parseInt(infillDensity.properties.value) + onClicked: { - // Restore to 90% only when enabling gradual infill + // Set to 90% only when enabling gradual infill if (parseInt(infillSteps.properties.value) == 0) { - infillDensity.setPropertyValue("value", 90) + previousInfillDensity = parseInt(infillDensity.properties.value) + infillDensity.setPropertyValue("value", String(90)) + } else { + infillDensity.setPropertyValue("value", String(previousInfillDensity)) } + infillSteps.setPropertyValue("value", (parseInt(infillSteps.properties.value) == 0) ? 5 : 0) } @@ -891,7 +916,6 @@ Item UM.SettingPropertyProvider { id: platformAdhesionType - containerStackId: Cura.MachineManager.activeMachineId key: "adhesion_type" watchedProperties: [ "value", "enabled" ] @@ -901,7 +925,6 @@ Item UM.SettingPropertyProvider { id: supportEnabled - containerStackId: Cura.MachineManager.activeMachineId key: "support_enable" watchedProperties: [ "value", "enabled", "description" ] @@ -911,7 +934,6 @@ Item UM.SettingPropertyProvider { id: machineExtruderCount - containerStackId: Cura.MachineManager.activeMachineId key: "machine_extruder_count" watchedProperties: [ "value" ] @@ -921,7 +943,6 @@ Item UM.SettingPropertyProvider { id: supportExtruderNr - containerStackId: Cura.MachineManager.activeMachineId key: "support_extruder_nr" watchedProperties: [ "value" ]