diff options
| author | 2010-01-20 19:20:57 -0800 | |
|---|---|---|
| committer | 2010-01-20 19:20:57 -0800 | |
| commit | aeeb1a84aae2c7400b2edd90cea8306565225275 (patch) | |
| tree | a07f786fe65b1dc8d113e74e419bade21d2e28b5 | |
| parent | 6dc9232c1c9a7ddffba24d4bd218e46894f8414d (diff) | |
| parent | 8681df902e8cc61d290808c5d78ea48920d30f3b (diff) | |
am 8681df90: DO NOT MERGE
Merge commit '8681df902e8cc61d290808c5d78ea48920d30f3b' into eclair-plus-aosp
* commit '8681df902e8cc61d290808c5d78ea48920d30f3b':
DO NOT MERGE
| -rw-r--r-- | core/java/android/webkit/WebView.java | 36 |
1 files 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 |