aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/focus/tst_focus.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-10-02 12:30:57 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-10-02 12:48:21 +0000
commit2069f1cae020113306f150309fb55de1c478ea59 (patch)
treebff9fe1761706a1b9d3804892ed327dbc7cc699a /tests/auto/focus/tst_focus.cpp
parent30bfa894d977e42d16d0ad88a023681818a11dc8 (diff)
Fix QQuickControl::setFocusReason()
There is a little behavior change in focus handling in Qt Quick after qdeclarative commit e7da97b. The order of QQuickItem::focusOutEvent() and QQuickItem::ItemActiveFocusHasChanged have changed. Now we need to emit visualFocusChanged() in setFocusReason() when losing visual focus to ensure that bindigs to visualFocus get re-evaluated as appropriate. Change-Id: I52e728c7df751a54b36f353415b2666cfedc73ad Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'tests/auto/focus/tst_focus.cpp')
-rw-r--r--tests/auto/focus/tst_focus.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/focus/tst_focus.cpp b/tests/auto/focus/tst_focus.cpp
index 36bc2d32..3f3b1ae5 100644
--- a/tests/auto/focus/tst_focus.cpp
+++ b/tests/auto/focus/tst_focus.cpp
@@ -63,6 +63,8 @@ private slots:
void reason_data();
void reason();
+
+ void visualFocus();
};
void tst_focus::initTestCase()
@@ -245,6 +247,35 @@ void tst_focus::reason()
QCOMPARE(control->property("visualFocus"), QVariant(true));
}
+void tst_focus::visualFocus()
+{
+ QQuickView view;
+ view.setSource(testFileUrl("visualFocus.qml"));
+ view.show();
+ view.requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(&view));
+
+ QQuickItem *column = view.rootObject();
+ QVERIFY(column);
+ QCOMPARE(column->childItems().count(), 2);
+
+ QQuickControl *button = qobject_cast<QQuickControl *>(column->childItems().first());
+ QVERIFY(button);
+
+ QQuickItem *textfield = column->childItems().last();
+ QVERIFY(textfield);
+
+ button->forceActiveFocus(Qt::TabFocusReason);
+ QVERIFY(button->hasActiveFocus());
+ QVERIFY(button->hasVisualFocus());
+ QVERIFY(button->property("showFocus").toBool());
+
+ QTest::mouseClick(&view, Qt::LeftButton, Qt::NoModifier, QPoint(textfield->x() + textfield->width() / 2, textfield->y() + textfield->height() / 2));
+ QVERIFY(!button->hasActiveFocus());
+ QVERIFY(!button->hasVisualFocus());
+ QVERIFY(!button->property("showFocus").toBool());
+}
+
QTEST_MAIN(tst_focus)
#include "tst_focus.moc"