diff options
author | Adam Powell <adamp@google.com> | 2011-08-03 22:38:48 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2011-08-04 10:36:37 -0700 |
commit | 568ccd88d7efd33da0c535e07b7ea7cf476be22a (patch) | |
tree | 0eacc4774528267bb1de2b3b8e7d5e115a07b0ac /core/java/android/widget/FastScroller.java | |
parent | cf27a3ecc6782b6c86f720b1df2459a160fde81a (diff) | |
download | frameworks_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.java | 9 |
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); } |