diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2016-08-05 14:56:56 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2016-08-08 10:24:02 +0000 |
commit | 076640e0e7ac31574c41bd6298a89b0cb5d7f9a7 (patch) | |
tree | 9866c1887f28a0b84b5f0eae170240d0f7036103 /src/quick/items/qquickevents.cpp | |
parent | 72e6195925f5390670d78f115a405971162cb4eb (diff) |
Handle press events without release gracefully
In the old code, touch point grabbers would be ignored in case of a
press without release for a point. To make sure not to break existing
bad test code or clash with broken devices, warn, but reset the grabber
for new press events.
Change-Id: Ia76ed4d3ee32c983c451f760837e83f8d90dab41
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/items/qquickevents.cpp')
-rw-r--r-- | src/quick/items/qquickevents.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index bc9e5d0ad2..59faafa023 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -624,7 +624,13 @@ QQuickPointerEvent *QQuickPointerTouchEvent::reset(QEvent *event) for (int i = 0; i < newPointCount; ++i) { auto point = m_touchPoints.at(i); point->reset(tps.at(i), ev->timestamp()); - point->setGrabber(grabbers.at(i)); + if (point->state() == QQuickEventPoint::Pressed) { + if (grabbers.at(i)) + qWarning() << "TouchPointPressed without previous release event" << point; + point->setGrabber(nullptr); + } else { + point->setGrabber(grabbers.at(i)); + } } m_pointCount = newPointCount; return this; |