diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-03-19 10:03:48 +0100 |
---|---|---|
committer | Kent Hansen <kent.hansen@nokia.com> | 2012-03-19 10:03:48 +0100 |
commit | 95d6f8a4cf3fba2fd675f0e6b5de0ce1d702da26 (patch) | |
tree | a0bb36e478c97761afa36baf8026726b3d2fdbc8 /src/gui | |
parent | 3f64a7b67bfbcaab65ebb03f84962cce5834790b (diff) | |
parent | 25e004bfe493e18be255b057ae5c132a5ec5458b (diff) |
Merge master into api_changes
Conflicts:
src/corelib/tools/qvector.h
tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
Change-Id: I877256e95f3788e617437f4e9661a88047f38cd6
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/accessible/qaccessible.h | 6 | ||||
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface_qpa.cpp | 34 | ||||
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface_qpa.h | 12 | ||||
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 4 |
4 files changed, 53 insertions, 3 deletions
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index ffdd3fe7ce..4d79fe78ee 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -430,6 +430,7 @@ private: class Q_GUI_EXPORT QAccessibleEvent { + Q_DISABLE_COPY(QAccessibleEvent) public: inline QAccessibleEvent(QAccessible::Event typ, QObject *obj, int chld = -1) : m_type(typ), m_object(obj), m_child(chld) @@ -446,7 +447,8 @@ public: QAccessibleInterface *accessibleInterface() const; -private: +protected: + QAccessible::Event m_type; QObject *m_object; int m_child; @@ -463,7 +465,7 @@ public: return m_changedStates; } -private: +protected: QAccessible::State m_changedStates; }; diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.cpp b/src/gui/kernel/qwindowsysteminterface_qpa.cpp index be9ac8e545..9ab91d65d5 100644 --- a/src/gui/kernel/qwindowsysteminterface_qpa.cpp +++ b/src/gui/kernel/qwindowsysteminterface_qpa.cpp @@ -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); diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.h b/src/gui/kernel/qwindowsysteminterface_qpa.h index 040f62e763..560f47d972 100644 --- a/src/gui/kernel/qwindowsysteminterface_qpa.h +++ b/src/gui/kernel/qwindowsysteminterface_qpa.h @@ -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); diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 8880eb7cb3..5dc757b6ce 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1564,7 +1564,9 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlag (flags & HB_ShaperFlag_UseDesignMetrics)) && FT_IS_SCALABLE(freetype->face); for (int i = 0; i < glyphs->numGlyphs; i++) { Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs->glyphs[i]) : 0; - if (g) { + // Since we are passing Format_None to loadGlyph, use same default format logic as loadGlyph + GlyphFormat acceptableFormat = (defaultFormat != Format_None) ? defaultFormat : Format_Mono; + if (g && g->format == acceptableFormat) { glyphs->advances_x[i] = design ? QFixed::fromFixed(g->linearAdvance) : QFixed(g->advance); } else { if (!face) |