summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2012-11-14 10:52:16 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-14 14:18:31 +0100
commit9346cb955230b3fbca8062a2fe8c912713011ce4 (patch)
tree01acf41bf9d1a60d553c515c34227e31a39e50df /tests
parent85ff27d9ec485e87936c60c3e49b2e26d0b3946a (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')
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp38
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