From 20d6dac63c25d227ed5315801e3e853ee78ec248 Mon Sep 17 00:00:00 2001 From: Andre de la Rocha Date: Fri, 25 May 2018 14:48:03 +0200 Subject: 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 --- src/plugins/platforms/windows/qtwindowsglobal.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/plugins/platforms/windows/qtwindowsglobal.h') diff --git a/src/plugins/platforms/windows/qtwindowsglobal.h b/src/plugins/platforms/windows/qtwindowsglobal.h index 6c44541314..ef22a4451a 100644 --- a/src/plugins/platforms/windows/qtwindowsglobal.h +++ b/src/plugins/platforms/windows/qtwindowsglobal.h @@ -60,6 +60,21 @@ # define WM_DPICHANGED 0x02E0 #endif +// WM_POINTER support from Windows 8 onwards (WINVER >= 0x0602) +#ifndef WM_POINTERUPDATE +# define WM_NCPOINTERUPDATE 0x0241 +# define WM_NCPOINTERDOWN 0x0242 +# define WM_NCPOINTERUP 0x0243 +# define WM_POINTERUPDATE 0x0245 +# define WM_POINTERDOWN 0x0246 +# define WM_POINTERUP 0x0247 +# define WM_POINTERENTER 0x0249 +# define WM_POINTERLEAVE 0x024A +# define WM_POINTERACTIVATE 0x024B +# define WM_POINTERWHEEL 0x024E +# define WM_POINTERHWHEEL 0x024F +#endif // WM_POINTERUPDATE + QT_BEGIN_NAMESPACE namespace QtWindows @@ -78,6 +93,7 @@ enum ApplicationEventFlag = 0x1000000, ThemingEventFlag = 0x2000000, GenericEventFlag = 0x4000000, // Misc + PointerEventFlag = 0x8000000, }; enum WindowsEventType // Simplify event types @@ -103,13 +119,16 @@ enum WindowsEventType // Simplify event types DpiChangedEvent = WindowEventFlag + 21, EnterSizeMoveEvent = WindowEventFlag + 22, ExitSizeMoveEvent = WindowEventFlag + 23, + PointerActivateWindowEvent = WindowEventFlag + 24, MouseEvent = MouseEventFlag + 1, MouseWheelEvent = MouseEventFlag + 2, CursorEvent = MouseEventFlag + 3, TouchEvent = TouchEventFlag + 1, + PointerEvent = PointerEventFlag + 1, NonClientMouseEvent = NonClientEventFlag + MouseEventFlag + 1, NonClientHitTest = NonClientEventFlag + 2, NonClientCreate = NonClientEventFlag + 3, + NonClientPointerEvent = NonClientEventFlag + PointerEventFlag + 4, KeyEvent = KeyEventFlag + 1, KeyDownEvent = KeyEventFlag + KeyDownEventFlag + 1, KeyboardLayoutChangeEvent = KeyEventFlag + 2, @@ -167,6 +186,8 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI QtWindows::ActivateApplicationEvent : QtWindows::DeactivateApplicationEvent; case WM_MOUSEACTIVATE: return QtWindows::MouseActivateWindowEvent; + case WM_POINTERACTIVATE: + return QtWindows::PointerActivateWindowEvent; case WM_ACTIVATE: return LOWORD(wParamIn) == WA_INACTIVE ? QtWindows::DeactivateWindowEvent : QtWindows::ActivateWindowEvent; @@ -297,6 +318,10 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI if ((message >= WM_MOUSEFIRST && message <= WM_MOUSELAST) || (message >= WM_XBUTTONDOWN && message <= WM_XBUTTONDBLCLK)) return QtWindows::MouseEvent; + if (message >= WM_NCPOINTERUPDATE && message <= WM_NCPOINTERUP) + return QtWindows::NonClientPointerEvent; + if (message >= WM_POINTERUPDATE && message <= WM_POINTERHWHEEL) + return QtWindows::PointerEvent; return QtWindows::UnknownEvent; } -- cgit v1.2.3