summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/WebView.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 2b4284d..9b519c2 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -5015,7 +5015,7 @@ public class WebView extends AbsoluteLayout
final ScaleGestureDetector detector =
mZoomManager.getMultiTouchGestureDetector();
- boolean skipScaleGesture = false;
+ boolean isScrollGesture = false;
// Set to the mid-point of a two-finger gesture used to detect if the
// user has touched a layer.
float gestureX = x;
@@ -5043,7 +5043,7 @@ public class WebView extends AbsoluteLayout
}
action = ev.getActionMasked();
if (dist < DRAG_LAYER_FINGER_DISTANCE) {
- skipScaleGesture = true;
+ isScrollGesture = true;
} else if (mTouchMode == TOUCH_DRAG_LAYER_MODE) {
// Fingers moved too far apart while dragging, the user
// might be trying to zoom.
@@ -5052,9 +5052,13 @@ public class WebView extends AbsoluteLayout
}
}
- // If the page disallows zoom, pass multi-pointer events to webkit.
- if (!skipScaleGesture && ev.getPointerCount() > 1
- && (mZoomManager.isZoomScaleFixed() || mDeferMultitouch)) {
+ // If the page disallows zoom, pass multi-touch events to webkit.
+ // mDeferMultitouch is a hack for layout tests, where it is used to
+ // force passing multi-touch events to webkit.
+ // FIXME: always pass multi-touch events to webkit and remove everything
+ // related to mDeferMultitouch.
+ if (ev.getPointerCount() > 1 &&
+ (mDeferMultitouch || (!isScrollGesture && mZoomManager.isZoomScaleFixed()))) {
if (DebugFlags.WEB_VIEW) {
Log.v(LOGTAG, "passing " + ev.getPointerCount() + " points to webkit");
}
@@ -5063,7 +5067,7 @@ public class WebView extends AbsoluteLayout
}
if (mZoomManager.supportsMultiTouchZoom() && ev.getPointerCount() > 1 &&
- mTouchMode != TOUCH_DRAG_LAYER_MODE && !skipScaleGesture) {
+ mTouchMode != TOUCH_DRAG_LAYER_MODE && !isScrollGesture) {
if (!detector.isInProgress() &&
ev.getActionMasked() != MotionEvent.ACTION_POINTER_DOWN) {
// Insert a fake pointer down event in order to start
@@ -5336,7 +5340,7 @@ public class WebView extends AbsoluteLayout
deltaX = 0;
deltaY = 0;
- if (skipScaleGesture) {
+ if (isScrollGesture) {
startScrollingLayer(gestureX, gestureY);
}
startDrag();