diff options
author | benm@chromium.org <benm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-04 19:26:48 +0000 |
---|---|---|
committer | benm@chromium.org <benm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-04 19:26:48 +0000 |
commit | 6df12299371a56fcd6f8c4401715482d37dac394 (patch) | |
tree | 32ce918b56386c8b9769bd579444cb71776a09f5 /android_webview/java/src/org/chromium | |
parent | 5417e2f6ab46c9fbc7031fa660e2d245418b1c2f (diff) | |
download | chromium_src-6df12299371a56fcd6f8c4401715482d37dac394.zip chromium_src-6df12299371a56fcd6f8c4401715482d37dac394.tar.gz chromium_src-6df12299371a56fcd6f8c4401715482d37dac394.tar.bz2 |
[Android WebView] Suppress overscroll pulls
When there is no touch event taking place, suppress calls to onPull
that may come in after the users finger has left the screen.
BUG=391464
Review URL: https://codereview.chromium.org/366283004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281432 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/java/src/org/chromium')
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/AwContents.java | 10 | ||||
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/OverScrollGlow.java | 7 |
2 files changed, 15 insertions, 2 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 61c392c..8497489 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -2274,8 +2274,14 @@ public class AwContents { (int) Math.round(event.getY(actionIndex) / mDIPScale)); } - if (mOverScrollGlow != null && event.getActionMasked() == MotionEvent.ACTION_UP) { - mOverScrollGlow.releaseAll(); + if (mOverScrollGlow != null) { + if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + mOverScrollGlow.setShouldPull(true); + } else if (event.getActionMasked() == MotionEvent.ACTION_UP || + event.getActionMasked() == MotionEvent.ACTION_CANCEL) { + mOverScrollGlow.setShouldPull(false); + mOverScrollGlow.releaseAll(); + } } return rv; diff --git a/android_webview/java/src/org/chromium/android_webview/OverScrollGlow.java b/android_webview/java/src/org/chromium/android_webview/OverScrollGlow.java index 958da9d..2ebc198 100644 --- a/android_webview/java/src/org/chromium/android_webview/OverScrollGlow.java +++ b/android_webview/java/src/org/chromium/android_webview/OverScrollGlow.java @@ -23,6 +23,8 @@ class OverScrollGlow { private int mOverScrollDeltaX; private int mOverScrollDeltaY; + private boolean mShouldPull; + public OverScrollGlow(Context context, View host) { mHostView = host; mEdgeGlowTop = new EdgeEffect(context); @@ -31,6 +33,10 @@ class OverScrollGlow { mEdgeGlowRight = new EdgeEffect(context); } + public void setShouldPull(boolean shouldPull) { + mShouldPull = shouldPull; + } + /** * Pull leftover touch scroll distance into one of the edge glows as appropriate. * @@ -42,6 +48,7 @@ class OverScrollGlow { * @param maxY Maximum range for vertical scrolling */ public void pullGlow(int x, int y, int oldX, int oldY, int maxX, int maxY) { + if (!mShouldPull) return; // Only show overscroll bars if there was no movement in any direction // as a result of scrolling. if (oldX == mHostView.getScrollX() && oldY == mHostView.getScrollY()) { |