diff options
author | Andre de la Rocha <andre.rocha@qt.io> | 2018-05-25 14:48:03 +0200 |
---|---|---|
committer | Andre de la Rocha <andre.rocha@qt.io> | 2018-07-12 09:52:07 +0000 |
commit | 20d6dac63c25d227ed5315801e3e853ee78ec248 (patch) | |
tree | 1d192a1f407db1146191db653e3b1737d0d27d55 /src/plugins/platforms/windows/qwindowscontext.h | |
parent | dffbf4a7f6b5d5544c13ac059822512a770d4df8 (diff) |
Add Windows Pointer Input Messages support
Replaces the handling of tablet/touchscreen/touchpad/mouse input with a
unified implementation based on the Windows Pointer Input Messages added
to Windows 8. The legacy implementation is still used for Windows 7.
Task-number: QTBUG-60437
Change-Id: I0a0f48ee9d5365f84ba528aa04c6ab1fe4253c50
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowscontext.h')
-rw-r--r-- | src/plugins/platforms/windows/qwindowscontext.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/platforms/windows/qwindowscontext.h b/src/plugins/platforms/windows/qwindowscontext.h index cb4d049081..2c2313c30a 100644 --- a/src/plugins/platforms/windows/qwindowscontext.h +++ b/src/plugins/platforms/windows/qwindowscontext.h @@ -85,7 +85,14 @@ class QTouchDevice; struct QWindowsUser32DLL { inline void init(); - + inline bool supportsPointerApi(); + + typedef BOOL (WINAPI *EnableMouseInPointer)(BOOL); + typedef BOOL (WINAPI *GetPointerType)(UINT32, PVOID); + typedef BOOL (WINAPI *GetPointerInfo)(UINT32, PVOID); + typedef BOOL (WINAPI *GetPointerTouchInfo)(UINT32, PVOID); + typedef BOOL (WINAPI *GetPointerFrameTouchInfo)(UINT32, UINT32 *, PVOID); + typedef BOOL (WINAPI *GetPointerPenInfo)(UINT32, PVOID); typedef BOOL (WINAPI *SetProcessDPIAware)(); typedef BOOL (WINAPI *AddClipboardFormatListener)(HWND); typedef BOOL (WINAPI *RemoveClipboardFormatListener)(HWND); @@ -95,6 +102,14 @@ struct QWindowsUser32DLL typedef int (WINAPI *GetWindowDpiAwarenessContext)(HWND); typedef int (WINAPI *GetAwarenessFromDpiAwarenessContext)(int); + // Windows pointer functions (Windows 8 or later). + EnableMouseInPointer enableMouseInPointer = nullptr; + GetPointerType getPointerType = nullptr; + GetPointerInfo getPointerInfo = nullptr; + GetPointerTouchInfo getPointerTouchInfo = nullptr; + GetPointerFrameTouchInfo getPointerFrameTouchInfo = nullptr; + GetPointerPenInfo getPointerPenInfo = nullptr; + // Windows Vista onwards SetProcessDPIAware setProcessDPIAware = nullptr; @@ -134,7 +149,8 @@ public: enum SystemInfoFlags { SI_RTL_Extensions = 0x1, - SI_SupportsTouch = 0x2 + SI_SupportsTouch = 0x2, + SI_SupportsPointer = 0x4, }; // Verbose flag set by environment variable QT_QPA_VERBOSE @@ -145,6 +161,8 @@ public: bool initTouch(); bool initTouch(unsigned integrationOptions); // For calls from QWindowsIntegration::QWindowsIntegration() only. + bool initTablet(unsigned integrationOptions); + bool initPointer(unsigned integrationOptions); int defaultDPI() const; @@ -220,6 +238,7 @@ private: #ifndef QT_NO_CONTEXTMENU bool handleContextMenuEvent(QWindow *window, const MSG &msg); #endif + void handleExitSizeMove(QWindow *window); void unregisterWindowClasses(); QScopedPointer<QWindowsContextPrivate> d; |