summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2010-06-23 10:26:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-06-23 10:26:44 -0700
commit73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf (patch)
tree815b66ee07fca7d2770e3915db596a5401c261b2
parent9fe2c4e2b89cbe4e22fdbcb3d5ecae1a853b133e (diff)
parent110486f932510fb49bfeff978b0b0e0237ee0656 (diff)
downloadframeworks_base-73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf.zip
frameworks_base-73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf.tar.gz
frameworks_base-73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf.tar.bz2
Merge "Fix a bug where requestDisallowInterceptTouchEvent does not get called when scrolling is resumed after stopping a fling." into gingerbread
-rw-r--r--core/java/android/view/ViewGroup.java3
-rw-r--r--core/java/android/widget/AbsListView.java8
2 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index eca583f..e7b6c50 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -223,8 +223,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
/**
* When set, this ViewGroup should not intercept touch events.
+ * {@hide}
*/
- private static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
+ protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
/**
* Indicates which types of drawing caches are to be kept in memory.
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index fcfecb3..6cfeb68 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2056,6 +2056,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
if (y != mLastY) {
+ // We may be here after stopping a fling and continuing to scroll.
+ // If so, we haven't disallowed intercepting touch events yet.
+ // Make sure that we do so in case we're in a parent that can intercept.
+ if ((mGroupFlags & FLAG_DISALLOW_INTERCEPT) == 0 &&
+ Math.abs(deltaY) > mTouchSlop) {
+ requestDisallowInterceptTouchEvent(true);
+ }
+
deltaY -= mMotionCorrection;
int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : deltaY;