From 4b35c91a776ab0f1ce0f2e54727deec432e6c321 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 10 Dec 2015 18:42:42 +0100 Subject: [PATCH] QLineEdit: a validator fixup() should keep it modified; add failing test I still have no idea how to fix this properly given the absolute mess of QWidgetLineControl. For now add a failing test. Change-Id: Ieb5ad6994c8ce7deb0cd0f2f47d51073d042244e Task-number: QTBUG-49295 Reviewed-by: Marc Mutz --- .../widgets/qlineedit/tst_qlineedit.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index 666960d98e..b46609c371 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -229,6 +229,7 @@ private slots: void isModified(); void edited(); + void fixupDoesNotModify_QTBUG_49295(); void insert(); void setSelection_data(); @@ -2844,6 +2845,29 @@ void tst_QLineEdit::edited() QVERIFY(testWidget->isModified()); } +void tst_QLineEdit::fixupDoesNotModify_QTBUG_49295() +{ + QLineEdit *testWidget = ensureTestWidget(); + + ValidatorWithFixup val; + testWidget->setValidator(&val); + testWidget->setText("foo"); + QVERIFY(!testWidget->isModified()); + QVERIFY(!testWidget->hasAcceptableInput()); + + QTest::keyClicks(testWidget, QStringLiteral("bar")); + QVERIFY(testWidget->isModified()); + QVERIFY(!testWidget->hasAcceptableInput()); + + // trigger a fixup, which should not reset the modified flag + QFocusEvent lostFocus(QEvent::FocusOut); + qApp->sendEvent(testWidget, &lostFocus); + + QVERIFY(testWidget->hasAcceptableInput()); + QEXPECT_FAIL("", "QTBUG-49295: a fixup of a line edit should keep it modified", Continue); + QVERIFY(testWidget->isModified()); +} + void tst_QLineEdit::insert() { QLineEdit *testWidget = ensureTestWidget();