diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index c971566a6a..133a8fa578 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -189,6 +189,8 @@ private slots: void isReadOnly(); + void noCursorBlinkWhenReadOnly(); + void cursorPosition(); void cursorPositionChanged_data(); @@ -1828,6 +1830,42 @@ void tst_QLineEdit::isReadOnly() QCOMPARE(testWidget->text(), QString("the quick dark brown fox")); } +class BlinkTestLineEdit : public QLineEdit +{ +public: + void paintEvent(QPaintEvent *e) + { + ++updates; + QLineEdit::paintEvent(e); + } + + int updates; +}; + +void tst_QLineEdit::noCursorBlinkWhenReadOnly() +{ + int cursorFlashTime = QApplication::cursorFlashTime(); + if (cursorFlashTime == 0) + return; + BlinkTestLineEdit le; + le.show(); + le.setFocus(); + QTest::qWaitForWindowActive(&le); + le.updates = 0; + QTest::qWait(cursorFlashTime); + QVERIFY(le.updates > 0); + le.setReadOnly(true); + QTest::qWait(10); + le.updates = 0; + QTest::qWait(cursorFlashTime); + QCOMPARE(le.updates, 0); + le.setReadOnly(false); + QTest::qWait(10); + le.updates = 0; + QTest::qWait(cursorFlashTime); + QVERIFY(le.updates > 0); +} + static void figureOutProperKey(Qt::Key &key, Qt::KeyboardModifiers &pressState) { #ifdef Q_OS_MAC |