Browse Source

Recreate bindings for the text fields

CURA-6690
Lipu Fei 5 years ago
parent
commit
c661f82756

+ 7 - 1
resources/qml/MachineSettings/NumericTextFieldWithUnit.qml

@@ -156,7 +156,13 @@ UM.TooltipArea
             const value = propertyProvider.properties.value
             return value ? value : ""
         }
-        validator: RegExpValidator { regExp: allowNegativeValue ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ }
+        validator: DoubleValidator
+        {
+            bottom: allowNegativeValue ? Number.NEGATIVE_INFINITY : 0
+            top: allowPositiveValue ? Number.POSITIVE_INFINITY : 0
+            decimals: 6
+            notation: DoubleValidator.StandardNotation
+        }
 
         onEditingFinished: editingFinishedFunction()
 

+ 17 - 1
resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml

@@ -55,10 +55,23 @@ NumericTextFieldWithUnit
 
     valueText: axisValue
 
+    Connections
+    {
+        target: textField
+        onActiveFocusChanged:
+        {
+            // When this text field loses focus and the entered text is not valid, make sure to recreate the binding to
+            // show the correct value.
+            if (!textField.activeFocus && !textField.acceptableInput)
+            {
+                valueText = axisValue
+            }
+        }
+    }
+
     editingFinishedFunction: function()
     {
         var polygon = JSON.parse(propertyProvider.properties.value)
-
         var newValue = parseFloat(valueText.replace(',', '.'))
 
         if (axisName == "x")  // x min/x max
@@ -79,5 +92,8 @@ NumericTextFieldWithUnit
             propertyProvider.setPropertyValue("value", polygon_string)
             forceUpdateOnChangeFunction()
         }
+
+        // Recreate the binding to show the correct value.
+        valueText = axisValue
     }
 }