summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2019-11-04 14:21:18 +0100
committerJohan Klokkhammer Helsing <johan.helsing@qt.io>2019-11-05 13:19:01 +0100
commit57c28f461a066c03ef8ae3f823c040fa91876fb8 (patch)
tree56b3c4aef313c2859c63713fbfaab79a8c0ecee5
parent09474cdf5244ce6fba51a6b01bfe50caf7635c66 (diff)
downloadqtwayland-57c28f461a066c03ef8ae3f823c040fa91876fb8.tar.gz
Fix touch being ignored when down and motion are in the same frame
The Wayland protocol gives no guarantees about which events are part of a frame, so handle the case where we receive wl_touch.down and wl_touch.motion within the same frame. Fixes: QTBUG-79744 Change-Id: I5dd9302576d81da38e003c8e7e74da6a98def603 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r--src/client/qwaylandinputdevice.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 8f3df8e4..193ce714 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -1062,7 +1062,10 @@ void QWaylandInputDevice::handleTouchPoint(int id, Qt::TouchPointState state, co
tp.area.moveCenter(globalPosition);
}
- tp.state = state;
+ // If the touch point was pressed earlier this frame, we don't want to overwrite its state.
+ if (tp.state != Qt::TouchPointPressed)
+ tp.state = state;
+
tp.pressure = tp.state == Qt::TouchPointReleased ? 0 : 1;
}