From 840d2311279d4da54c5f5d8df1f7d6253cd256df Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 28 Nov 2018 15:17:48 +0200 Subject: Fix inspector slider decimal places count MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With this patch inspector slider value shows only the needed amount of decimals. Redundant decimal 0s are removed. So slider properties can show 0 (like in the case of opacity), 1, 2, or 3 decimal places. Task-number: QT3DS-2769 Change-Id: I76accd4e7c4b1e66d7a9cc1a428b20ec32fd1112 Reviewed-by: Miikka Heikkinen Reviewed-by: Jere Tuliniemi Reviewed-by: Tomi Korpipää --- .../Studio/Palettes/Action/HandlerPropertyBaseSlider.qml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Authoring/Studio/Palettes/Action/HandlerPropertyBaseSlider.qml b/src/Authoring/Studio/Palettes/Action/HandlerPropertyBaseSlider.qml index f1aacbab..13e36516 100644 --- a/src/Authoring/Studio/Palettes/Action/HandlerPropertyBaseSlider.qml +++ b/src/Authoring/Studio/Palettes/Action/HandlerPropertyBaseSlider.qml @@ -44,7 +44,7 @@ Row { property alias sliderMin: slider.from property alias sliderMax: slider.to property bool intSlider: false - property int decimalSlider: 1 + property int decimalSlider: Math.min(precision(slider.stepSize), 3) property Item tabItem1: textField signal previewValue // Indicates desiredValue contains a preview value @@ -61,6 +61,14 @@ Row { root.commitValue(); } + // get the number of decimals in a float/double + function precision(a) { + if (!isFinite(a)) return 0; + var e = 1, p = 0; + while (Math.round(a * e) / e !== a) { e *= 10; p++; } + return p; + } + onValueChanged: { slider.value = value; textField.setTextFieldValue(); -- cgit v1.2.3