diff options
-rw-r--r-- | WebCore/page/EventHandler.cpp | 7 | ||||
-rw-r--r-- | WebCore/platform/PlatformTouchPoint.h | 1 | ||||
-rw-r--r-- | WebCore/platform/qt/PlatformTouchPointQt.cpp | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp index 6082cfe..741401c 100644 --- a/WebCore/page/EventHandler.cpp +++ b/WebCore/page/EventHandler.cpp @@ -2622,6 +2622,13 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) touches->append(touch); // Now build up the correct list for changedTouches. + // Note that any touches that are in the TouchStationary state (e.g. if + // the user had several points touched but did not move them all) should + // only be present in the touches list. They may also be added to the + // targetTouches list later, but should never be in the changedTouches + // list so we do not handle them explicitly here. + // See https://bugs.webkit.org/show_bug.cgi?id=37609 for further discussion + // about the TouchStationary state. if (point.state() == PlatformTouchPoint::TouchReleased) releasedTouches->append(touch); else if (point.state() == PlatformTouchPoint::TouchCancelled) diff --git a/WebCore/platform/PlatformTouchPoint.h b/WebCore/platform/PlatformTouchPoint.h index 90a3ace..d4f855e 100644 --- a/WebCore/platform/PlatformTouchPoint.h +++ b/WebCore/platform/PlatformTouchPoint.h @@ -40,6 +40,7 @@ public: TouchReleased, TouchPressed, TouchMoved, + TouchStationary, TouchCancelled }; diff --git a/WebCore/platform/qt/PlatformTouchPointQt.cpp b/WebCore/platform/qt/PlatformTouchPointQt.cpp index 6afe4a1..c293212 100644 --- a/WebCore/platform/qt/PlatformTouchPointQt.cpp +++ b/WebCore/platform/qt/PlatformTouchPointQt.cpp @@ -35,6 +35,7 @@ PlatformTouchPoint::PlatformTouchPoint(const QTouchEvent::TouchPoint& point) case Qt::TouchPointReleased: m_state = TouchReleased; break; case Qt::TouchPointMoved: m_state = TouchMoved; break; case Qt::TouchPointPressed: m_state = TouchPressed; break; + case Qt::TouchPointStationary: m_state = TouchStationary; break; } m_screenPos = point.screenPos().toPoint(); m_pos = point.pos().toPoint(); |