diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-03-06 13:52:33 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-03-16 06:54:17 +0000 |
commit | 936570a3b3440ed2508bacb9b9916381cb864ffb (patch) | |
tree | 01bbf6b52f869b1955740df4a13089388ea4fa04 /src/quick/items/qquickevents_p_p.h | |
parent | 08197a25c081f734b93065f6c7c7ce570b155758 (diff) |
QQuickWindow: skip mouse synthesis for touch events from trackpads
A trackpad is primarily a mouse-emulating device, which can also
recognize gestures, and furthermore can send raw touches iff it
is asked to. So, every touch event from a trackpad is likely to be
followed by a mouse or gesture event (especially when the
MouseEmulation capability confirms that it is able to do that).
Therefore mouse event synthesis is redundant.
In this bug scenario, MultiPointTouchArea enables touch events within
its rectangular bounds. A Flickable is on top. As you flick with
two fingers on the trackpad, macOS sends touch events with two
touch points (because MPTA enabled touch events) and also a series
of QWheelEvents as it recognizes the flick gesture. The Flickable
receives mouse events sythesized from one touch point, and reacts
as if you were dragging with one finger on a touchscreen, while it
simultaneously also reacts to the QWheelEvents. Meanwhile the
remaining touchpoint falls through to the MPTA underneath; so the
user ends up interacting with both at the same time and making
the Flickable jump around besides. This patch just fixes the
jumpiness in Flickable: it will no longer receive the synth-mouse
events, so it will not be dragged, and will react only to the
wheel events. But MPTA still gets the touches.
Task-number: QTBUG-66329
Change-Id: I6f535a2c9e47bcb284eaf9ae1fdaa39f8b510af9
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'src/quick/items/qquickevents_p_p.h')
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index c4f0b60d92..2a1e9dc184 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -597,6 +597,7 @@ public: Area = QTouchDevice::Area, Pressure = QTouchDevice::Pressure, Velocity = QTouchDevice::Velocity, + MouseEmulation = QTouchDevice::MouseEmulation, // some bits reserved in case we need more of QTouchDevice::Capabilities Scroll = 0x0100, // mouse has a wheel, or there is OS-level scroll gesture recognition (dubious?) Hover = 0x0200, |