summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/FastScroller.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-08-03 22:38:48 -0700
committerAdam Powell <adamp@google.com>2011-08-04 10:36:37 -0700
commit568ccd88d7efd33da0c535e07b7ea7cf476be22a (patch)
tree0eacc4774528267bb1de2b3b8e7d5e115a07b0ac /core/java/android/widget/FastScroller.java
parentcf27a3ecc6782b6c86f720b1df2459a160fde81a (diff)
downloadframeworks_base-568ccd88d7efd33da0c535e07b7ea7cf476be22a.zip
frameworks_base-568ccd88d7efd33da0c535e07b7ea7cf476be22a.tar.gz
frameworks_base-568ccd88d7efd33da0c535e07b7ea7cf476be22a.tar.bz2
Fix bug 5073637 - Market apps crashing FastScroller
It seems that some popular Market apps do not properly implement SectionIndexer#getSectionForPosition and the framework did not previously call it. Revert to more simplistic scrollbar behavior for apps targeting sdk < Honeycomb. Change-Id: If0b1f2b4db540de4bb8ba45798e498c09cddb42f
Diffstat (limited to 'core/java/android/widget/FastScroller.java')
-rw-r--r--core/java/android/widget/FastScroller.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java
index 00ebe0d..7ad5d6c 100644
--- a/core/java/android/widget/FastScroller.java
+++ b/core/java/android/widget/FastScroller.java
@@ -116,6 +116,8 @@ class FastScroller {
private int mOverlayPosition;
+ private boolean mMatchDragPosition;
+
private static final int FADE_TIMEOUT = 1500;
private final Rect mTmpRect = new Rect();
@@ -262,6 +264,9 @@ class FastScroller {
ta.recycle();
+ mMatchDragPosition = context.getApplicationInfo().targetSdkVersion >=
+ android.os.Build.VERSION_CODES.HONEYCOMB;
+
setScrollbarPosition(mList.getVerticalScrollbarPosition());
}
@@ -417,7 +422,7 @@ class FastScroller {
}
return;
}
- if (totalItemCount - visibleItemCount > 0 && mState != STATE_DRAGGING ) {
+ if (totalItemCount - visibleItemCount > 0 && mState != STATE_DRAGGING) {
mThumbY = getThumbPositionForListPosition(firstVisibleItem, visibleItemCount,
totalItemCount);
if (mChangedBounds) {
@@ -595,7 +600,7 @@ class FastScroller {
if (mSectionIndexer == null) {
getSectionsFromIndexer();
}
- if (mSectionIndexer == null) {
+ if (mSectionIndexer == null || !mMatchDragPosition) {
return ((mList.getHeight() - mThumbH) * firstVisibleItem)
/ (totalItemCount - visibleItemCount);
}