From 7ac2e56930adeca42560cf293c072eaeab8daac6 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Mon, 22 Jun 2020 17:07:06 +0000 Subject: [PATCH] optimize QAbstractSpinBoxPrivate::bound() Signed-off-by: Ivailo Monev --- src/gui/widgets/qabstractspinbox.cpp | 41 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/gui/widgets/qabstractspinbox.cpp b/src/gui/widgets/qabstractspinbox.cpp index e153f3369..fe92cc6a6 100644 --- a/src/gui/widgets/qabstractspinbox.cpp +++ b/src/gui/widgets/qabstractspinbox.cpp @@ -1573,32 +1573,31 @@ void QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const QVariant QAbstractSpinBoxPrivate::bound(const QVariant &val, const QVariant &old, int steps) const { - QVariant v = val; if (!wrapping || steps == 0 || old.isNull()) { - if (variantCompare(v, minimum) < 0) { - v = wrapping ? maximum : minimum; + if (variantCompare(val, minimum) < 0) { + return (wrapping ? maximum : minimum); } - if (variantCompare(v, maximum) > 0) { - v = wrapping ? minimum : maximum; - } - } else { - const bool wasMin = old == minimum; - const bool wasMax = old == maximum; - const int oldcmp = variantCompare(v, old); - const int maxcmp = variantCompare(v, maximum); - const int mincmp = variantCompare(v, minimum); - const bool wrapped = (oldcmp > 0 && steps < 0) || (oldcmp < 0 && steps > 0); - if (maxcmp > 0) { - v = ((wasMax && !wrapped && steps > 0) || (steps < 0 && !wasMin && wrapped)) - ? minimum : maximum; - } else if (wrapped && (maxcmp > 0 || mincmp < 0)) { - v = ((wasMax && steps > 0) || (!wasMin && steps < 0)) ? minimum : maximum; - } else if (mincmp < 0) { - v = (!wasMax && !wasMin ? minimum : maximum); + if (variantCompare(val, maximum) > 0) { + return (wrapping ? minimum : maximum); } } - return v; + const bool wasMin = old == minimum; + const bool wasMax = old == maximum; + const int oldcmp = variantCompare(val, old); + const int maxcmp = variantCompare(val, maximum); + const int mincmp = variantCompare(val, minimum); + const bool wrapped = (oldcmp > 0 && steps < 0) || (oldcmp < 0 && steps > 0); + if (maxcmp > 0) { + return ((wasMax && !wrapped && steps > 0) || (steps < 0 && !wasMin && wrapped)) + ? minimum : maximum; + } else if (wrapped && (maxcmp > 0 || mincmp < 0)) { + return ((wasMax && steps > 0) || (!wasMin && steps < 0)) ? minimum : maximum; + } else if (mincmp < 0) { + return (!wasMax && !wasMin ? minimum : maximum); + } + + return val; } /*! -- 2.11.0