summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qguiapplication.cpp28
-rw-r--r--src/gui/kernel/qguiapplication_p.h4
-rw-r--r--src/widgets/kernel/qapplication_p.h4
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;