summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/page/EventHandler.cpp7
-rw-r--r--WebCore/platform/PlatformTouchPoint.h1
-rw-r--r--WebCore/platform/qt/PlatformTouchPointQt.cpp1
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();