diff options
author | Andreas Buhr <andreas@andreasbuhr.de> | 2021-01-13 13:45:43 +0100 |
---|---|---|
committer | Andreas Buhr <andreas@andreasbuhr.de> | 2021-01-13 17:48:10 +0100 |
commit | 28f515e6334fd1c15a2f7f18de6be7bfe1f9c302 (patch) | |
tree | e04cc4e9c53718210931e5193fd46156cf59d698 /tests | |
parent | a34327a557f0460d0786a845846e49b90f83a701 (diff) |
Fix QQuickShortcut::setContext so re-grab all shortcuts
A while ago, QQuickShortcut was extended to not only have a shortcut
m_shortcut but in addition a list m_shortcuts. During this extension,
the setContext method was missed: Shortcuts in m_shortcuts are
not re-grabbed on context change. This patch fixes this.
Task-number: QTBUG-88682
Pick-to: 6.0 5.15
Change-Id: Ie73d516f2a325a328b6e975d69490eea29a18401
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquickshortcut/tst_qquickshortcut.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickshortcut/tst_qquickshortcut.cpp b/tests/auto/quick/qquickshortcut/tst_qquickshortcut.cpp index 3a8ecb2b96..7b7113e2ce 100644 --- a/tests/auto/quick/qquickshortcut/tst_qquickshortcut.cpp +++ b/tests/auto/quick/qquickshortcut/tst_qquickshortcut.cpp @@ -48,6 +48,8 @@ private slots: void sequence(); void context_data(); void context(); + void contextChange_data(); + void contextChange(); void matcher_data(); void matcher(); void multiple_data(); @@ -462,6 +464,48 @@ void tst_QQuickShortcut::multiple() QCOMPARE(window->property("activated").toBool(), activated); } +void tst_QQuickShortcut::contextChange_data() +{ + multiple_data(); +} +void tst_QQuickShortcut::contextChange() +{ + QFETCH(QStringList, sequences); + QFETCH(Qt::Key, key); + QFETCH(Qt::KeyboardModifiers, modifiers); + QFETCH(bool, enabled); + QFETCH(bool, activated); + + QQmlApplicationEngine engine; + + engine.load(testFileUrl("multiple.qml")); + QQuickWindow *inactivewindow = qobject_cast<QQuickWindow *>(engine.rootObjects().value(0)); + QVERIFY(inactivewindow); + inactivewindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(inactivewindow)); + + QObject *shortcut = inactivewindow->property("shortcut").value<QObject *>(); + QVERIFY(shortcut); + + shortcut->setProperty("enabled", enabled); + shortcut->setProperty("sequences", sequences); + shortcut->setProperty("context", Qt::WindowShortcut); + + engine.load(testFileUrl("multiple.qml")); + QQuickWindow *activewindow = qobject_cast<QQuickWindow *>(engine.rootObjects().value(1)); + QVERIFY(activewindow); + activewindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(activewindow)); + + QTest::keyPress(activewindow, key, modifiers); + QCOMPARE(inactivewindow->property("activated").toBool(), false); + + shortcut->setProperty("context", Qt::ApplicationShortcut); + + QTest::keyPress(activewindow, key, modifiers); + QCOMPARE(inactivewindow->property("activated").toBool(), activated); +} + #ifdef QT_QUICKWIDGETS_LIB void tst_QQuickShortcut::quickWidgetShortcuts_data() { |