aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/applicationwindow/tst_applicationwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/applicationwindow/tst_applicationwindow.cpp')
-rw-r--r--tests/auto/applicationwindow/tst_applicationwindow.cpp44
1 files changed, 40 insertions, 4 deletions
diff --git a/tests/auto/applicationwindow/tst_applicationwindow.cpp b/tests/auto/applicationwindow/tst_applicationwindow.cpp
index 61f84673..f35d9b7d 100644
--- a/tests/auto/applicationwindow/tst_applicationwindow.cpp
+++ b/tests/auto/applicationwindow/tst_applicationwindow.cpp
@@ -46,6 +46,8 @@
#include <QtQuickTemplates2/private/qquickoverlay_p.h>
#include <QtQuickTemplates2/private/qquickcontrol_p.h>
#include <QtQuickTemplates2/private/qquicklabel_p.h>
+#include <QtQuickTemplates2/private/qquickmenu_p.h>
+#include <QtQuickTemplates2/private/qquickpopup_p.h>
#include <QtQuickTemplates2/private/qquicktextarea_p.h>
#include <QtQuickTemplates2/private/qquicktextfield_p.h>
#include <QtQuickControls2/private/qquickproxytheme_p.h>
@@ -664,9 +666,9 @@ void tst_applicationwindow::focusAfterPopupClosed()
QVERIFY(focusScope);
QVERIFY(focusScope->hasActiveFocus());
- QSignalSpy spy(window.data(), SIGNAL(focusScopeKeyPressed()));
+ QSignalSpy focusScopeSpy(window.data(), SIGNAL(focusScopeKeyPressed()));
QTest::keyClick(window.data(), Qt::Key_Space);
- QCOMPARE(spy.count(), 1);
+ QCOMPARE(focusScopeSpy.count(), 1);
// Open the menu.
QQuickItem* toolButton = window->property("toolButton").value<QQuickItem*>();
@@ -677,14 +679,48 @@ void tst_applicationwindow::focusAfterPopupClosed()
// The FocusScope shouldn't receive any key events while the menu is open.
QTest::keyClick(window.data(), Qt::Key_Space);
- QCOMPARE(spy.count(), 1);
+ QCOMPARE(focusScopeSpy.count(), 1);
// Close the menu. The FocusScope should regain focus.
QTest::keyClick(window.data(), Qt::Key_Escape);
QVERIFY(focusScope->hasActiveFocus());
QTest::keyClick(window.data(), Qt::Key_Space);
- QCOMPARE(spy.count(), 2);
+ QCOMPARE(focusScopeSpy.count(), 2);
+
+ QQuickPopup *focusPopup = window->property("focusPopup").value<QQuickPopup*>();
+ QVERIFY(focusPopup);
+ QVERIFY(!focusPopup->hasActiveFocus());
+
+ focusPopup->open();
+ QVERIFY(focusPopup->isVisible());
+
+ QSignalSpy focusPopupSpy(window.data(), SIGNAL(focusPopupKeyPressed()));
+ QTest::keyClick(window.data(), Qt::Key_Space);
+ QCOMPARE(focusPopupSpy.count(), 1);
+
+ QQuickMenu *fileMenu = window->property("fileMenu").value<QQuickMenu*>();
+ QVERIFY(fileMenu);
+ fileMenu->open();
+ QVERIFY(fileMenu->isVisible());
+
+ // The Popup shouldn't receive any key events while the menu is open.
+ QTest::keyClick(window.data(), Qt::Key_Space);
+ QCOMPARE(focusPopupSpy.count(), 1);
+
+ // Close the menu. The Popup should regain focus.
+ QTest::keyClick(window.data(), Qt::Key_Escape);
+ QVERIFY(focusPopup->hasActiveFocus());
+
+ QTest::keyClick(window.data(), Qt::Key_Space);
+ QCOMPARE(focusPopupSpy.count(), 2);
+
+ // Close the popup. The FocusScope should regain focus.
+ QTest::keyClick(window.data(), Qt::Key_Escape);
+ QVERIFY(focusScope->hasActiveFocus());
+
+ QTest::keyClick(window.data(), Qt::Key_Space);
+ QCOMPARE(focusScopeSpy.count(), 3);
}
void tst_applicationwindow::clearFocusOnDestruction()