diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2012-11-14 10:52:16 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-14 14:18:31 +0100 |
commit | 9346cb955230b3fbca8062a2fe8c912713011ce4 (patch) | |
tree | 01acf41bf9d1a60d553c515c34227e31a39e50df /tests/auto/widgets/widgets/qlineedit | |
parent | 85ff27d9ec485e87936c60c3e49b2e26d0b3946a (diff) |
Widgets: Stop cursor blink timer when QLineEdit is read-only
This prevents unnecessary updates, since the cursor is not visible.
Change-Id: Iec54ed338a0cb526a03cd611de4d823e26f3d804
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'tests/auto/widgets/widgets/qlineedit')
-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 |