Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b95cc7e authored by Alan Viverette's avatar Alan Viverette
Browse files

Quick fix for updating the FastScroller long list property

BUG: 12553181
Change-Id: I5305b0ec4ae8e069fc98d45dc3d5daaa0628ca79
parent 4a5eb8fe
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2104,16 +2104,17 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        mInLayout = true;
        final int childCount = getChildCount();
        if (changed) {
            int childCount = getChildCount();
            for (int i = 0; i < childCount; i++) {
                getChildAt(i).forceLayout();
            }
            mRecycler.markChildrenDirty();
        }

        if (mFastScroll != null && (mItemCount != mOldItemCount || mDataChanged)) {
            mFastScroll.onItemCountChanged(mItemCount);
        // TODO: Move somewhere sane. This doesn't belong in onLayout().
        if (mFastScroll != null) {
            mFastScroll.onItemCountChanged(childCount, mItemCount);
        }

        layoutChildren();
+20 −12
Original line number Diff line number Diff line
@@ -205,6 +205,9 @@ class FastScroller {
    private long mPendingDrag = -1;
    private int mScaledTouchSlop;

    private int mOldItemCount;
    private int mOldChildCount;

    /**
     * Used to delay hiding fast scroll decorations.
     */
@@ -227,6 +230,8 @@ class FastScroller {

    public FastScroller(AbsListView listView, int styleResId) {
        mList = listView;
        mOldItemCount = listView.getCount();
        mOldChildCount = listView.getChildCount();

        final Context context = listView.getContext();
        mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
@@ -258,7 +263,7 @@ class FastScroller {
        overlay.add(mSecondaryText);

        getSectionsFromIndexer();
        updateLongList(listView.getChildCount(), listView.getCount());
        updateLongList(mOldChildCount, mOldItemCount);
        setScrollbarPosition(listView.getVerticalScrollbarPosition());
        postAutoHide();
    }
@@ -484,20 +489,23 @@ class FastScroller {
        updateLayout();
    }

    public void onItemCountChanged(int totalItemCount) {
        final int visibleItemCount = mList.getChildCount();
        final boolean hasMoreItems = totalItemCount - visibleItemCount > 0;
    public void onItemCountChanged(int childCount, int itemCount) {
        if (mOldItemCount != itemCount || mOldChildCount != childCount) {
            mOldItemCount = itemCount;
            mOldChildCount = childCount;

            final boolean hasMoreItems = itemCount - childCount > 0;
            if (hasMoreItems && mState != STATE_DRAGGING) {
                final int firstVisibleItem = mList.getFirstVisiblePosition();
            setThumbPos(getPosFromItemCount(firstVisibleItem, visibleItemCount, totalItemCount));
                setThumbPos(getPosFromItemCount(firstVisibleItem, childCount, itemCount));
            }

        updateLongList(visibleItemCount, totalItemCount);
            updateLongList(childCount, itemCount);
        }
    }

    private void updateLongList(int visibleItemCount, int totalItemCount) {
        final boolean longList = visibleItemCount > 0
                && totalItemCount / visibleItemCount >= MIN_PAGES;
    private void updateLongList(int childCount, int itemCount) {
        final boolean longList = childCount > 0 && itemCount / childCount >= MIN_PAGES;
        if (mLongList != longList) {
            mLongList = longList;