diff options
Diffstat (limited to 'tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp')
-rw-r--r-- | tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp b/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp index bd17b77fd8..6ae8ae38f7 100644 --- a/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp +++ b/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp @@ -29,6 +29,9 @@ #include <QtTest/qtest.h> #include <QtTest/qsignalspy.h> #include <QtGui/qcursor.h> +#if QT_CONFIG(shortcut) +#include <QtGui/qkeysequence.h> +#endif #include <QtGui/qstylehints.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> @@ -73,6 +76,9 @@ private slots: void order(); void popup(); void actions(); +#if QT_CONFIG(shortcut) + void actionShortcuts(); +#endif void removeTakeItem(); void subMenuMouse_data(); void subMenuMouse(); @@ -999,6 +1005,56 @@ void tst_QQuickMenu::actions() QVERIFY(menuItem1.isNull()); } +#if QT_CONFIG(shortcut) +void tst_QQuickMenu::actionShortcuts() +{ + QQuickControlsApplicationHelper helper(this, QLatin1String("actionShortcuts.qml")); + QVERIFY2(helper.ready, helper.failureMessage()); + QQuickWindow *window = helper.window; + window->show(); + QVERIFY(QTest::qWaitForWindowActive(window)); + + // Try the menu's shortcut. + QQuickMenu *menu = window->property("menu").value<QQuickMenu *>(); + QVERIFY(menu); + QPointer<QQuickAction> action1 = menu->actionAt(0); + QVERIFY(action1); + QCOMPARE(action1->shortcut(), QKeySequence(Qt::Key_A)); + + QSignalSpy action1TriggeredSpy(action1, SIGNAL(triggered())); + QVERIFY(action1TriggeredSpy.isValid()); + + QTest::keyClick(window, Qt::Key_A); + QCOMPARE(action1TriggeredSpy.count(), 1); + + // Try the sub-menu. + QQuickMenu *subMenu = window->property("subMenu").value<QQuickMenu *>(); + QVERIFY(subMenu); + QPointer<QQuickAction> subMenuAction1 = subMenu->actionAt(0); + QVERIFY(subMenuAction1); + QCOMPARE(subMenuAction1->shortcut(), QKeySequence(Qt::Key_B)); + + QSignalSpy subMenuAction1TriggeredSpy(subMenuAction1, SIGNAL(triggered())); + QVERIFY(subMenuAction1TriggeredSpy.isValid()); + + QTest::keyClick(window, Qt::Key_B); + QCOMPARE(subMenuAction1TriggeredSpy.count(), 1); + + // Try the button menu. + QQuickMenu *buttonMenu = window->property("buttonMenu").value<QQuickMenu *>(); + QVERIFY(buttonMenu); + QPointer<QQuickAction> buttonMenuAction1 = buttonMenu->actionAt(0); + QVERIFY(buttonMenuAction1); + QCOMPARE(buttonMenuAction1->shortcut(), QKeySequence(Qt::Key_C)); + + QSignalSpy buttonMenuAction1TriggeredSpy(buttonMenuAction1, SIGNAL(triggered())); + QVERIFY(buttonMenuAction1TriggeredSpy.isValid()); + + QTest::keyClick(window, Qt::Key_C); + QCOMPARE(buttonMenuAction1TriggeredSpy.count(), 1); +} +#endif + void tst_QQuickMenu::removeTakeItem() { QQuickControlsApplicationHelper helper(this, QLatin1String("removeTakeItem.qml")); |