aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qquickpopup/tst_qquickpopup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qquickpopup/tst_qquickpopup.cpp')
-rw-r--r--tests/auto/qquickpopup/tst_qquickpopup.cpp52
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp
index fc2ac881..f0d8b004 100644
--- a/tests/auto/qquickpopup/tst_qquickpopup.cpp
+++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp
@@ -72,6 +72,7 @@ private slots:
void activeFocusOnClose1();
void activeFocusOnClose2();
void activeFocusOnClose3();
+ void activeFocusOnClosingSeveralPopups();
void hover_data();
void hover();
void wheel_data();
@@ -667,6 +668,54 @@ void tst_QQuickPopup::activeFocusOnClose3()
QTRY_VERIFY(popup2->hasActiveFocus());
}
+void tst_QQuickPopup::activeFocusOnClosingSeveralPopups()
+{
+ // Test that active focus isn't lost when multiple popup closing simultaneously
+ QQuickApplicationHelper helper(this, QStringLiteral("activeFocusOnClosingSeveralPopups.qml"));
+ QQuickApplicationWindow *window = helper.appWindow;
+ window->show();
+ window->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(window));
+
+ QQuickItem *button = window->property("button").value<QQuickItem *>();
+ QVERIFY(button);
+
+ QQuickPopup *popup1 = window->property("popup1").value<QQuickPopup *>();
+ QVERIFY(popup1);
+
+ QQuickPopup *popup2 = window->property("popup2").value<QQuickPopup *>();
+ QVERIFY(popup2);
+
+ QCOMPARE(button->hasActiveFocus(), true);
+ popup1->open();
+ QTRY_VERIFY(popup1->isOpened());
+ QVERIFY(popup1->hasActiveFocus());
+ popup2->open();
+ QTRY_VERIFY(popup2->isOpened());
+ QVERIFY(popup2->hasActiveFocus());
+ QTRY_COMPARE(button->hasActiveFocus(), false);
+ // close the unfocused popup first
+ popup1->close();
+ popup2->close();
+ QTRY_VERIFY(!popup1->isVisible());
+ QTRY_VERIFY(!popup2->isVisible());
+ QTRY_COMPARE(button->hasActiveFocus(), true);
+
+ popup1->open();
+ QTRY_VERIFY(popup1->isOpened());
+ QVERIFY(popup1->hasActiveFocus());
+ popup2->open();
+ QTRY_VERIFY(popup2->isOpened());
+ QVERIFY(popup2->hasActiveFocus());
+ QTRY_COMPARE(button->hasActiveFocus(), false);
+ // close the focused popup first
+ popup2->close();
+ popup1->close();
+ QTRY_VERIFY(!popup1->isVisible());
+ QTRY_VERIFY(!popup2->isVisible());
+ QTRY_COMPARE(button->hasActiveFocus(), true);
+}
+
void tst_QQuickPopup::hover_data()
{
QTest::addColumn<QString>("source");
@@ -1029,12 +1078,13 @@ void tst_QQuickPopup::closeOnEscapeWithVisiblePopup()
QQuickApplicationHelper helper(this, QStringLiteral("closeOnEscapeWithVisiblePopup.qml"));
QQuickWindow *window = helper.window;
window->show();
- QVERIFY(QTest::qWaitForWindowExposed(window));
+ QVERIFY(QTest::qWaitForWindowActive(window));
QQuickPopup *popup = window->findChild<QQuickPopup *>("popup");
QVERIFY(popup);
QTRY_VERIFY(popup->isOpened());
+ QTRY_VERIFY(window->activeFocusItem());
QTest::keyClick(window, Qt::Key_Escape);
QTRY_VERIFY(!popup->isVisible());
}