From 8681df902e8cc61d290808c5d78ea48920d30f3b Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Wed, 20 Jan 2010 17:38:18 -0800 Subject: [PATCH] DO NOT MERGE Adopt the sloppy detection in the ScaleGestureDetector. Try to fix the fat thumb problem. Fix http://b/issue?id=2385061 --- core/java/android/webkit/WebView.java | 36 ++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 1c335aa356da..ab1841e140d7 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3965,19 +3965,41 @@ public class WebView extends AbsoluteLayout + mTouchMode); } + int action; + float x, y; + long eventTime = ev.getEventTime(); + // FIXME: we may consider to give WebKit an option to handle multi-touch // events later. if (mSupportMultiTouch && mMinZoomScale < mMaxZoomScale && ev.getPointerCount() > 1) { - mLastTouchTime = ev.getEventTime(); - return mScaleDetector.onTouchEvent(ev); + mScaleDetector.onTouchEvent(ev); + if (mScaleDetector.isInProgress()) { + mLastTouchTime = eventTime; + return true; + } + x = mScaleDetector.getFocusX(); + y = mScaleDetector.getFocusY(); + action = ev.getAction() & MotionEvent.ACTION_MASK; + if (action == MotionEvent.ACTION_POINTER_DOWN) { + cancelTouch(); + action = MotionEvent.ACTION_DOWN; + } else if (action == MotionEvent.ACTION_POINTER_UP) { + // set mLastTouchX/Y to the remaining point + mLastTouchX = x; + mLastTouchY = y; + } else if (action == MotionEvent.ACTION_MOVE) { + // negative x or y indicate it is on the edge, skip it. + if (x < 0 || y < 0) { + return true; + } + } + } else { + action = ev.getAction(); + x = ev.getX(); + y = ev.getY(); } - int action = ev.getAction(); - float x = ev.getX(); - float y = ev.getY(); - long eventTime = ev.getEventTime(); - // Due to the touch screen edge effect, a touch closer to the edge // always snapped to the edge. As getViewWidth() can be different from // getWidth() due to the scrollbar, adjusting the point to match -- 2.11.0