diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-05-23 14:34:23 +0200 |
---|---|---|
committer | Andy Nichols <andy.nichols@qt.io> | 2017-05-29 08:11:02 +0000 |
commit | 44a5b008f7a6dce065f5997503e403609ee62859 (patch) | |
tree | 77cbaca896428a70bab5bb785e39d10b6b33dcee /tests/auto/quickwidgets | |
parent | df30d90eadcd92eebb4bf79f3eb251bc58d25d09 (diff) |
Forward ShortcutOverride in QQuickWidget
This is now essential since otherwise these events are simply lost.
Amends 0dbc575c1a8359534761167a5f5f1e29abedd51d
Task-number: QTBUG-60988
Change-Id: Ib1d99d8fcd5bb92c9b52977796f2910f0fe71c48
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'tests/auto/quickwidgets')
-rw-r--r-- | tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
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" |