diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-10-02 12:30:57 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-10-02 12:48:21 +0000 |
commit | 2069f1cae020113306f150309fb55de1c478ea59 (patch) | |
tree | bff9fe1761706a1b9d3804892ed327dbc7cc699a /tests/auto/focus/tst_focus.cpp | |
parent | 30bfa894d977e42d16d0ad88a023681818a11dc8 (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.cpp | 31 |
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" |