From 291a19f7d3cd6aa7e1b612da34c5747aea07e119 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sun, 13 Nov 2016 22:30:56 +0900 Subject: tdeui: fixed handling of setPrecision() for KDoubleSpinBox. This resolves bug 2717. Signed-off-by: Michele Calgaro (cherry picked from commit f32bc5176289b70bf1c6e7d2825d53f190bc4096) --- tdeui/knuminput.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'tdeui/knuminput.cpp') diff --git a/tdeui/knuminput.cpp b/tdeui/knuminput.cpp index f39d07443..7d1fa260f 100644 --- a/tdeui/knuminput.cpp +++ b/tdeui/knuminput.cpp @@ -1054,13 +1054,28 @@ void KDoubleSpinBox::setPrecision( int precision ) { } void KDoubleSpinBox::setPrecision( int precision, bool force ) { - if ( precision < 1 ) return; + if ( precision < 0 ) return; if ( !force ) { int maxPrec = maxPrecision(); if ( precision > maxPrec ) + { precision = maxPrec; + } } + // Update minValue, maxValue, value and lineStep to match the precision change + int oldPrecision = d->mPrecision; + double oldValue = value(); + double oldMinValue = minValue(); + double oldMaxValue = maxValue(); + double oldLineStep = lineStep(); d->mPrecision = precision; + if (precision != oldPrecision) + { + setMinValue(oldMinValue); + setMaxValue(oldMaxValue); + setValue(oldValue); + setLineStep(oldLineStep); + } updateValidator(); } -- cgit v1.2.1