Windows: Implement QWindowsIntegration::queryKeyboardModifiers()
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 12 Mar 2012 16:16:35 +0000 (17:16 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 12 Mar 2012 16:33:15 +0000 (17:33 +0100)
Use code from Qt 4.8.

Change-Id: I32d220e04d13ee1e692c0c58268b827bcf519dc7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
src/plugins/platforms/windows/qwindowsintegration.cpp
src/plugins/platforms/windows/qwindowsintegration.h
src/plugins/platforms/windows/qwindowskeymapper.cpp
src/plugins/platforms/windows/qwindowskeymapper.h

index d03abe1..3c2ece5 100644 (file)
@@ -56,6 +56,7 @@
 #include "qwindowsdrag.h"
 #include "qwindowsinputcontext.h"
 #include "qwindowsaccessibility.h"
+#include "qwindowskeymapper.h"
 
 #include <QtGui/QPlatformNativeInterface>
 #include <QtGui/QWindowSystemInterface>
@@ -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;
index ba5fafb..6dd65a0 100644 (file)
@@ -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); }
index 7b96603..4b5e958 100644 (file)
@@ -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
index 483ff57..b549422 100644 (file)
@@ -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);