aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quickwidgets/qquickwidget.cpp3
-rw-r--r--tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp33
2 files changed, 36 insertions, 0 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index 49ac0caefd..2e8623f508 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -1440,6 +1440,9 @@ bool QQuickWidget::event(QEvent *e)
d->offscreenWindow->setWindowState(resolveWindowState(windowState()));
break;
+ case QEvent::ShortcutOverride:
+ return QCoreApplication::sendEvent(d->offscreenWindow, e);
+
default:
break;
}
diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
index bd051ec990..60495596d1 100644
--- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
+++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
@@ -59,6 +59,7 @@ private slots:
void reparentToNewWindow();
void nullEngine();
void keyEvents();
+ void shortcuts();
};
@@ -365,6 +366,38 @@ void tst_qquickwidget::keyEvents()
QTRY_VERIFY(widget.ok);
}
+class ShortcutEventFilter : public QObject
+{
+public:
+ bool eventFilter(QObject *obj, QEvent *e) override {
+ if (e->type() == QEvent::ShortcutOverride)
+ shortcutOk = true;
+
+ return QObject::eventFilter(obj, e);
+ }
+
+ bool shortcutOk = false;
+};
+
+void tst_qquickwidget::shortcuts()
+{
+ // Verify that ShortcutOverride events do not get lost. (QTBUG-60988)
+ KeyHandlingWidget widget;
+ widget.setSource(testFileUrl("rectangle.qml"));
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(widget.window(), 5000));
+
+ // Send to the widget, verify that the QQuickWindow sees it.
+
+ ShortcutEventFilter filter;
+ widget.quickWindow()->installEventFilter(&filter);
+
+ QKeyEvent e(QEvent::ShortcutOverride, Qt::Key_A, Qt::ControlModifier);
+ QCoreApplication::sendEvent(&widget, &e);
+
+ QTRY_VERIFY(filter.shortcutOk);
+}
+
QTEST_MAIN(tst_qquickwidget)
#include "tst_qquickwidget.moc"