diff options
author | Teemu Holappa <teemu.holappa@qt.io> | 2019-10-09 10:52:47 +0300 |
---|---|---|
committer | Teemu Holappa <teemu.holappa@qt.io> | 2019-10-09 20:02:05 +0300 |
commit | 6b6ef3a8417e628ca01a1c2cad81af69ea5c9d3a (patch) | |
tree | 7d3164b0c344c2a5fd5236bd815ff9e82441f3f9 /tests | |
parent | aa02de3c2a3a41e897814b751ec810074f250893 (diff) |
Send ShortcutOverride event when receiving a non-spontaneous key press
This is a very similar fix what's been done to the widgets to fix
QTBUG-48325. In QQuickWindow there is added the sending of
a ShortCutOverride even when a non-spontaneous KeyPress event
is received.
Task-number: QTBUG-78304
Change-Id: Icb267e611248460533f20e84deef71da6b481cd2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquickwindow/data/shortcut.qml | 47 | ||||
-rw-r--r-- | tests/auto/quick/qquickwindow/tst_qquickwindow.cpp | 28 |
2 files changed, 75 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickwindow/data/shortcut.qml b/tests/auto/quick/qquickwindow/data/shortcut.qml new file mode 100644 index 0000000000..2632e27859 --- /dev/null +++ b/tests/auto/quick/qquickwindow/data/shortcut.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.9 +import QtQuick.Window 2.2 + +Window { + id: root + visible: true + width: 200 + height: 200 + property bool received: false + Item { + focus: true + Shortcut { + sequence: "B" + onActivated: { + root.received = true + } + } + } +} + diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp index f08b9207d1..7faa621e86 100644 --- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp +++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp @@ -482,6 +482,10 @@ private slots: void testChildMouseEventFilter_data(); void cleanupGrabsOnRelease(); +#if QT_CONFIG(shortcut) + void testShortCut(); +#endif + private: QTouchDevice *touchDevice; QTouchDevice *touchDeviceWithVelocity; @@ -3579,6 +3583,30 @@ void tst_qquickwindow::cleanupGrabsOnRelease() QCOMPARE(parent->mouseUngrabEventCount, 1); } +#if QT_CONFIG(shortcut) +void tst_qquickwindow::testShortCut() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.loadUrl(testFileUrl("shortcut.qml")); + + QObject *created = component.create(); + QScopedPointer<QObject> cleanup(created); + QVERIFY(created); + + QQuickWindow *window = qobject_cast<QQuickWindow *>(created); + QVERIFY(QTest::qWaitForWindowActive(window)); + + EventFilter eventFilter; + window->activeFocusItem()->installEventFilter(&eventFilter); + //Send non-spontaneous key press event + QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_B, Qt::NoModifier); + QCoreApplication::sendEvent(window, &keyEvent); + QVERIFY(eventFilter.events.contains(int(QEvent::ShortcutOverride))); + QVERIFY(window->property("received").value<bool>()); +} +#endif + QTEST_MAIN(tst_qquickwindow) #include "tst_qquickwindow.moc" |