summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2016-08-16 13:04:46 +0200
committerMaurice Kalinowski <maurice.kalinowski@qt.io>2016-08-25 17:29:51 +0000
commit1e85ca2e62e9aba553a53effabf52272aa3acb70 (patch)
tree3d20ebc838097c2aeeed67e960e114df3cd1e9ad /tests/auto
parentc0a513d55fff9c3bfe4159bb4800a5050f766957 (diff)
QAbstractSpinBox: Clear 'cleared' flag on receiving a keypress
Prevent QAbstractSpinBoxPrivate::interpret() from bailing out in focus changes after text has been entered. Task-number: QTBUG-55249 Change-Id: I250b3c50f7db5de2e9356038df20f18ee059df11 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
index 34b05c5291..6d011eed59 100644
--- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
+++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
@@ -143,6 +143,8 @@ private slots:
void positiveSign();
+ void interpretOnLosingFocus();
+
void setGroupSeparatorShown_data();
void setGroupSeparatorShown();
@@ -1150,6 +1152,33 @@ void tst_QSpinBox::positiveSign()
QCOMPARE(spinBox.text(), QLatin1String("+20"));
}
+void tst_QSpinBox::interpretOnLosingFocus()
+{
+ // QTBUG-55249: When typing an invalid value after QSpinBox::clear(),
+ // it should be fixed up on losing focus.
+
+ static const int minimumValue = 10;
+ static const int maximumValue = 20;
+
+ QWidget widget;
+ widget.setWindowTitle(QTest::currentTestFunction());
+ QVBoxLayout *layout = new QVBoxLayout(&widget);
+ QLineEdit *focusDummy = new QLineEdit("focusDummy", &widget);
+ layout->addWidget(focusDummy);
+ SpinBox *spinBox = new SpinBox(&widget);
+ spinBox->setRange(minimumValue, maximumValue);
+ spinBox->setValue(minimumValue);
+ layout->addWidget(spinBox);
+ spinBox->clear();
+ spinBox->setFocus();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowActive(&widget));
+ QTest::keyClick(spinBox, Qt::Key_1); // Too small
+ focusDummy->setFocus();
+ QCOMPARE(spinBox->value(), minimumValue);
+ QCOMPARE(spinBox->lineEdit()->text().toInt(), minimumValue);
+}
+
void tst_QSpinBox::setGroupSeparatorShown_data()
{
QTest::addColumn<QLocale::Language>("lang");