summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/widgets/qspinbox.cpp2
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp17
2 files changed, 18 insertions, 1 deletions
diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp
index bf4e130d4e..2a34451408 100644
--- a/src/widgets/widgets/qspinbox.cpp
+++ b/src/widgets/widgets/qspinbox.cpp
@@ -1040,7 +1040,7 @@ QVariant QSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
if (max != min && (copy.isEmpty()
|| (min < 0 && copy == QLatin1String("-"))
- || (min >= 0 && copy == QLatin1String("+")))) {
+ || (max >= 0 && copy == QLatin1String("+")))) {
state = QValidator::Intermediate;
QSBDEBUG() << __FILE__ << __LINE__<< "num is set to" << num;
} else if (copy.startsWith(QLatin1Char('-')) && min >= 0) {
diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
index 004fdda5ef..a21f2d70a0 100644
--- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
+++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
@@ -142,6 +142,8 @@ private slots:
void taskQTBUG_5008_textFromValueAndValidate();
void lineEditReturnPressed();
+
+ void positiveSign();
public slots:
void valueChangedHelper(const QString &);
void valueChangedHelper(int);
@@ -1111,5 +1113,20 @@ void tst_QSpinBox::lineEditReturnPressed()
QCOMPARE(spyCurrentChanged.count(), 1);
}
+void tst_QSpinBox::positiveSign()
+{
+ QSpinBox spinBox;
+ spinBox.setRange(-20, 20);
+ spinBox.setValue(-20);
+ spinBox.show();
+ QVERIFY(QTest::qWaitForWindowActive(&spinBox));
+
+ QTest::keyClick(&spinBox, Qt::Key_End, Qt::ShiftModifier);
+ QTest::keyClick(&spinBox, Qt::Key_Plus, Qt::ShiftModifier);
+ QTest::keyClick(&spinBox, Qt::Key_2);
+ QTest::keyClick(&spinBox, Qt::Key_0);
+ QCOMPARE(spinBox.text(), QLatin1String("+20"));
+}
+
QTEST_MAIN(tst_QSpinBox)
#include "tst_qspinbox.moc"