Pass all key events through the shortcutmap
This has to happen in QGuiApp, not QApp. Change-Id: If8a6e81df3ae9b601733d077cce57d2d21572f74 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
This commit is contained in:
parent
6e7f08182e
commit
479f3c6b11
@ -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)
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user