Index: sources/gui/qml/components/Slider.qml =================================================================== diff -u -rd058eb89be720f349c507886dbd120fb7a775dfb -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision d058eb89be720f349c507886dbd120fb7a775dfb) +++ sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -40,6 +40,8 @@ property alias diameter : _handler.diameter property bool isActive : true + property bool inActiveZero : false // if inActiveZero:true, when is not active (inActive or active:false) sets to zero instead of minimum + property alias progressRectMargin : _progressRect.margin property int tickMarksThickness : 2 @@ -66,7 +68,7 @@ onIsActiveChanged: { setActive(isActive) if (!isActive) { - value = minimum + value = inActiveZero ? 0 : minimum } activeChanged() } @@ -104,22 +106,30 @@ return ( x * ( maximum - minimum ) ) / width + minimum } + function update(vValue) { + _root.value = vValue + } + function setValue(x) { - if ( x < 0 ) { value = minimum; return; } - if ( x > width ) { value = maximum; return; } + let mValue = 0 + if ( x < 0 ) { mValue = minimum; update(mValue); return; } + if ( x > width ) { mValue = maximum; update(mValue); return; } - value = getValueOfX(x) + mValue = getValueOfX(x) - if ( step === 1 ) { value = parseInt(value); return; } + if ( step === 1 ) { mValue = parseInt(mValue); update(mValue); return; } - var start = 0 + let start = 0 if ( ! stepSnap ) start = minimum - value = Math.round((value - start) / step) * step + start + mValue = Math.round((mValue - start) / step) * step + start + let decimals = Math.round(-Math.log10(step)) - if (decimals > 0) value = value.toFixed(decimals) + if (decimals > 0) mValue = mValue.toFixed(decimals) - if ( value < minimum ) { value = minimum; return; } - if ( value > maximum ) { value = maximum; return; } + if ( mValue < minimum ) { mValue = minimum; update(mValue); return; } + if ( mValue > maximum ) { mValue = maximum; update(mValue); return; } + + update(mValue); return; } function setHandlerPosition() {