summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Grace Kloba <klobag@google.com> 2010-01-20 19:20:57 -0800
committer Android Git Automerger <android-git-automerger@android.com> 2010-01-20 19:20:57 -0800
commitaeeb1a84aae2c7400b2edd90cea8306565225275 (patch)
treea07f786fe65b1dc8d113e74e419bade21d2e28b5
parent6dc9232c1c9a7ddffba24d4bd218e46894f8414d (diff)
parent8681df902e8cc61d290808c5d78ea48920d30f3b (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.java36
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