aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorTeemu Holappa <teemu.holappa@qt.io>2019-10-09 10:52:47 +0300
committerTeemu Holappa <teemu.holappa@qt.io>2019-10-09 20:02:05 +0300
commit6b6ef3a8417e628ca01a1c2cad81af69ea5c9d3a (patch)
tree7d3164b0c344c2a5fd5236bd815ff9e82441f3f9 /src/quick
parentaa02de3c2a3a41e897814b751ec810074f250893 (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 'src/quick')
-rw-r--r--src/quick/items/qquickwindow.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 64d7232354..b83c9159a4 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -102,6 +102,7 @@ Q_LOGGING_CATEGORY(DBG_DIRTY, "qt.quick.dirty")
Q_LOGGING_CATEGORY(lcTransient, "qt.quick.window.transient")
extern Q_GUI_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha);
+extern Q_GUI_EXPORT bool qt_sendShortcutOverrideEvent(QObject *o, ulong timestamp, int k, Qt::KeyboardModifiers mods, const QString &text = QString(), bool autorep = false, ushort count = 1);
bool QQuickWindowPrivate::defaultAlphaBuffer = false;
@@ -1794,6 +1795,13 @@ void QQuickWindowPrivate::deliverKeyEvent(QKeyEvent *e)
{
if (activeFocusItem) {
QQuickItem *item = activeFocusItem;
+
+ // In case of generated event, trigger ShortcutOverride event
+ if (e->type() == QEvent::KeyPress && e->spontaneous() == false)
+ qt_sendShortcutOverrideEvent(item, e->timestamp(),
+ e->key(), e->modifiers(), e->text(),
+ e->isAutoRepeat(), e->count());
+
e->accept();
QCoreApplication::sendEvent(item, e);
while (!e->isAccepted() && (item = item->parentItem())) {