diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-08-01 12:17:41 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-08-03 20:35:44 +0000 |
commit | b12735f17803b902fc6d073156e388c04dc6b903 (patch) | |
tree | fbeea7bf4bf388227d49547190b621b23854a44c /src/corelib/kernel | |
parent | abc024eef78cfc84a577ce9f1638c5b6dc4d101b (diff) |
Windows: Fix QEventLoop::ExcludeUserInputEvents for pointer events
Factor out the check for user input events from
QEventDispatcherWin32::processEvents() to a small
helper and add pointer messages (by value as to avoid MinGW issues).
Task-number: QTBUG-60437
Task-number: QTBUG-69687
Change-Id: I38bf227f862fcc44177a5027cafe1df49a10a919
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_win.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index 330870f219..f1a4088d98 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -522,6 +522,22 @@ QEventDispatcherWin32::~QEventDispatcherWin32() { } +static bool isUserInputMessage(UINT message) +{ + return (message >= WM_KEYFIRST && message <= WM_KEYLAST) + || (message >= WM_MOUSEFIRST && message <= WM_MOUSELAST) + || message == WM_MOUSEWHEEL + || message == WM_MOUSEHWHEEL + || message == WM_TOUCH +#ifndef QT_NO_GESTURES + || message == WM_GESTURE + || message == WM_GESTURENOTIFY +#endif +// Pointer input: Exclude WM_NCPOINTERUPDATE .. WM_POINTERROUTEDRELEASED + || (message >= 0x0241 && message <= 0x0253) + || message == WM_CLOSE; +} + bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags) { Q_D(QEventDispatcherWin32); @@ -562,19 +578,8 @@ bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags) } else { haveMessage = PeekMessage(&msg, 0, 0, 0, PM_REMOVE); if (haveMessage) { - if ((flags & QEventLoop::ExcludeUserInputEvents) - && ((msg.message >= WM_KEYFIRST - && msg.message <= WM_KEYLAST) - || (msg.message >= WM_MOUSEFIRST - && msg.message <= WM_MOUSELAST) - || msg.message == WM_MOUSEWHEEL - || msg.message == WM_MOUSEHWHEEL - || msg.message == WM_TOUCH -#ifndef QT_NO_GESTURES - || msg.message == WM_GESTURE - || msg.message == WM_GESTURENOTIFY -#endif - || msg.message == WM_CLOSE)) { + if (flags.testFlag(QEventLoop::ExcludeUserInputEvents) + && isUserInputMessage(msg.message)) { // queue user input events for later processing d->queuedUserInputEvents.append(msg); continue; |