From: Friedemann Kleint Date: Mon, 12 Mar 2012 16:16:35 +0000 (+0100) Subject: Windows: Implement QWindowsIntegration::queryKeyboardModifiers() X-Git-Tag: qt-v5.0.0-alpha1~358 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cf36e571eea0c1befda2abfe2a177ee9f7fc2912;p=profile%2Fivi%2Fqtbase.git Windows: Implement QWindowsIntegration::queryKeyboardModifiers() Use code from Qt 4.8. Change-Id: I32d220e04d13ee1e692c0c58268b827bcf519dc7 Reviewed-by: Friedemann Kleint --- diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index d03abe1..3c2ece5 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -56,6 +56,7 @@ #include "qwindowsdrag.h" #include "qwindowsinputcontext.h" #include "qwindowsaccessibility.h" +#include "qwindowskeymapper.h" #include #include @@ -321,6 +322,11 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co return QPlatformIntegration::styleHint(hint); } +Qt::KeyboardModifiers QWindowsIntegration::queryKeyboardModifiers() const +{ + return QWindowsKeyMapper::queryKeyboardModifiers(); +} + QPlatformNativeInterface *QWindowsIntegration::nativeInterface() const { return &d->m_nativeInterface; diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index ba5fafb..6dd65a0 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -73,6 +73,8 @@ public: QPlatformServices *services() const; virtual QVariant styleHint(StyleHint hint) const; + virtual Qt::KeyboardModifiers queryKeyboardModifiers() const; + static QWindowsIntegration *instance(); inline void emitScreenAdded(QPlatformScreen *s) { screenAdded(s); } diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index 7b96603..4b5e958 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -1072,4 +1072,16 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms return result; } +Qt::KeyboardModifiers QWindowsKeyMapper::queryKeyboardModifiers() +{ + Qt::KeyboardModifiers modifiers = Qt::NoModifier; + if (GetKeyState(VK_SHIFT) < 0) + modifiers |= Qt::ShiftModifier; + if (GetKeyState(VK_CONTROL) < 0) + modifiers |= Qt::ControlModifier; + if (GetKeyState(VK_MENU) < 0) + modifiers |= Qt::AltModifier; + return modifiers; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowskeymapper.h b/src/plugins/platforms/windows/qwindowskeymapper.h index 483ff57..b549422 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.h +++ b/src/plugins/platforms/windows/qwindowskeymapper.h @@ -69,6 +69,8 @@ public: QWindow *keyGrabber() const { return m_keyGrabber; } void setKeyGrabber(QWindow *w) { m_keyGrabber = w; } + static Qt::KeyboardModifiers queryKeyboardModifiers(); + private: bool translateKeyEventInternal(QWindow *receiver, const MSG &msg, bool grab); void updateKeyMap(const MSG &msg);