diff options
author | Andreas Buhr <andreas@andreasbuhr.de> | 2021-01-13 13:45:43 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-01-22 14:05:31 +0000 |
commit | dd5d01e61abc65f6001a2a34eb4e7252db4cb1b7 (patch) | |
tree | 6ed7959ec3192633742ca0dac969173e1c6348b5 /tests | |
parent | be3ab3275539864db5989692e38dfb21571853b7 (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
Change-Id: Ie73d516f2a325a328b6e975d69490eea29a18401
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit 28f515e6334fd1c15a2f7f18de6be7bfe1f9c302)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
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 4962690796..c428b22cc0 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::renderControlShortcuts_data() { |