diff options
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 28 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication_p.h | 4 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_p.h | 4 |
3 files changed, 20 insertions, 16 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 8f74e3d3db..1101764512 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -512,6 +512,18 @@ int QGuiApplication::exec() bool QGuiApplication::notify(QObject *object, QEvent *event) { +#ifndef QT_NO_SHORTCUT + if (event->type() == QEvent::KeyPress) { + // Try looking for a Shortcut before sending key events + QWindow *w = qobject_cast<QWindow *>(object); + QObject *focus = w ? w->focusObject() : 0; + if (!focus) + focus = object; + if (QGuiApplicationPrivate::instance()->shortcutMap.tryShortcutEvent(focus, static_cast<QKeyEvent *>(event))) + return true; + } +#endif + return QCoreApplication::notify(object, event); } @@ -700,18 +712,10 @@ void QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyE if (!window) return; - QObject *target = window; - - if (e->nativeScanCode || e->nativeVirtualKey || e->nativeModifiers) { - QKeyEventEx ev(e->keyType, e->key, e->modifiers, e->unicode, e->repeat, e->repeatCount, - e->nativeScanCode, e->nativeVirtualKey, e->nativeModifiers); - ev.setTimestamp(e->timestamp); - QGuiApplication::sendSpontaneousEvent(target, &ev); - } else { - QKeyEvent ev(e->keyType, e->key, e->modifiers, e->unicode, e->repeat, e->repeatCount); - ev.setTimestamp(e->timestamp); - QGuiApplication::sendSpontaneousEvent(target, &ev); - } + QKeyEventEx ev(e->keyType, e->key, e->modifiers, e->unicode, e->repeat, e->repeatCount, + e->nativeScanCode, e->nativeVirtualKey, e->nativeModifiers); + ev.setTimestamp(e->timestamp); + QGuiApplication::sendSpontaneousEvent(window, &ev); } void QGuiApplicationPrivate::processEnterEvent(QWindowSystemInterfacePrivate::EnterEvent *e) diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index af1c71d478..255a1587f5 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -53,6 +53,7 @@ #include "private/qwindowsysteminterface_qpa_p.h" #include <QtGui/qplatformintegration_qpa.h> #include <QtGui/qplatformtheme_qpa.h> +#include "private/qshortcutmap_p.h" QT_BEGIN_HEADER @@ -183,6 +184,9 @@ public: static bool quitOnLastWindowClosed; static QList<QObject *> generic_plugin_list; +#ifndef QT_NO_SHORTCUT + QShortcutMap shortcutMap; +#endif private: void init(); diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 77a02bd5ab..d0674d4585 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -68,7 +68,6 @@ #include "QtCore/qhash.h" #include "QtCore/qpointer.h" #include "private/qcoreapplication_p.h" -#include "private/qshortcutmap_p.h" #include <private/qthread_p.h> #include "QtCore/qpoint.h" #include <QTime> @@ -367,9 +366,6 @@ public: QBasicTimer toolTipWakeUp, toolTipFallAsleep; QPoint toolTipPos, toolTipGlobalPos, hoverGlobalPos; QPointer<QWidget> toolTipWidget; -#ifndef QT_NO_SHORTCUT - QShortcutMap shortcutMap; -#endif static QInputContext *inputContext; |