From 9346cb955230b3fbca8062a2fe8c912713011ce4 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 14 Nov 2012 10:52:16 +0100 Subject: Widgets: Stop cursor blink timer when QLineEdit is read-only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This prevents unnecessary updates, since the cursor is not visible. Change-Id: Iec54ed338a0cb526a03cd611de4d823e26f3d804 Reviewed-by: Jan Arve Sæther --- .../widgets/widgets/qlineedit/tst_qlineedit.cpp | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests') 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 -- cgit v1.2.3