Add QWindowSystemInterface::tryHandleSynchronousShortcutEvent()
This function sends a shortcut override through the shortcut system and returns the result of the event. This will be used in platform plugins (such as the Cocoa plugin) to make sure that shortcuts work when the user presses a dead-key combination that normally would go through an input method to produce text. An extended overload taking native scan code, virtual key, and modifiers has also been added. Change-Id: Ia3836229ab0c66d2fb6f310e72b6f4d6dfa9ead9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
This commit is contained in:
parent
1711bab719
commit
7b26a2cf2e
@ -41,6 +41,7 @@
|
||||
#include "qwindowsysteminterface_qpa.h"
|
||||
#include "qwindowsysteminterface_qpa_p.h"
|
||||
#include "private/qguiapplication_p.h"
|
||||
#include "private/qevent_p.h"
|
||||
#include "private/qtouchdevice_p.h"
|
||||
#include <QAbstractEventDispatcher>
|
||||
#include <QPlatformDrag>
|
||||
@ -147,6 +148,39 @@ void QWindowSystemInterface::handleMouseEvent(QWindow *tlw, ulong timestamp, con
|
||||
QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
|
||||
}
|
||||
|
||||
bool QWindowSystemInterface::tryHandleSynchronousShortcutEvent(QWindow *w, int k, Qt::KeyboardModifiers mods,
|
||||
const QString & text, bool autorep, ushort count)
|
||||
{
|
||||
unsigned long timestamp = QWindowSystemInterfacePrivate::eventTime.elapsed();
|
||||
return tryHandleSynchronousShortcutEvent(w, timestamp, k, mods, text, autorep, count);
|
||||
}
|
||||
|
||||
bool QWindowSystemInterface::tryHandleSynchronousShortcutEvent(QWindow *w, ulong timestamp, int k, Qt::KeyboardModifiers mods,
|
||||
const QString & text, bool autorep, ushort count)
|
||||
{
|
||||
QKeyEvent qevent(QEvent::ShortcutOverride, k, mods, text, autorep, count);
|
||||
qevent.setTimestamp(timestamp);
|
||||
return QGuiApplicationPrivate::instance()->shortcutMap.tryShortcutEvent(w, &qevent);
|
||||
}
|
||||
|
||||
bool QWindowSystemInterface::tryHandleSynchronousExtendedShortcutEvent(QWindow *w, int k, Qt::KeyboardModifiers mods,
|
||||
quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
|
||||
const QString &text, bool autorep, ushort count)
|
||||
{
|
||||
unsigned long timestamp = QWindowSystemInterfacePrivate::eventTime.elapsed();
|
||||
return tryHandleSynchronousExtendedShortcutEvent(w, timestamp, k, mods, nativeScanCode, nativeVirtualKey, nativeModifiers, text, autorep, count);
|
||||
}
|
||||
|
||||
bool QWindowSystemInterface::tryHandleSynchronousExtendedShortcutEvent(QWindow *w, ulong timestamp, int k, Qt::KeyboardModifiers mods,
|
||||
quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
|
||||
const QString &text, bool autorep, ushort count)
|
||||
{
|
||||
QKeyEventEx qevent(QEvent::ShortcutOverride, k, mods, text, autorep, count, nativeScanCode, nativeVirtualKey, nativeModifiers);
|
||||
qevent.setTimestamp(timestamp);
|
||||
return QGuiApplicationPrivate::instance()->shortcutMap.tryShortcutEvent(w, &qevent);
|
||||
}
|
||||
|
||||
|
||||
void QWindowSystemInterface::handleKeyEvent(QWindow *w, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text, bool autorep, ushort count) {
|
||||
unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed();
|
||||
handleKeyEvent(w, time, t, k, mods, text, autorep, count);
|
||||
|
@ -69,6 +69,18 @@ public:
|
||||
static void handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier);
|
||||
static void handleMouseEvent(QWindow *w, ulong timestamp, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier);
|
||||
|
||||
static bool tryHandleSynchronousShortcutEvent(QWindow *w, int k, Qt::KeyboardModifiers mods,
|
||||
const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
static bool tryHandleSynchronousShortcutEvent(QWindow *w, ulong timestamp, int k, Qt::KeyboardModifiers mods,
|
||||
const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
|
||||
static bool tryHandleSynchronousExtendedShortcutEvent(QWindow *w, int k, Qt::KeyboardModifiers mods,
|
||||
quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
|
||||
const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
static bool tryHandleSynchronousExtendedShortcutEvent(QWindow *w, ulong timestamp, int k, Qt::KeyboardModifiers mods,
|
||||
quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
|
||||
const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
|
||||
static void handleKeyEvent(QWindow *w, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
static void handleKeyEvent(QWindow *w, ulong timestamp, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user