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

Commit bca20aaf authored by Alan Viverette's avatar Alan Viverette
Browse files

DO NOT MERGE Quick fix for updating the FastScroller long list property

BUG: 12553181
Change-Id: I5305b0ec4ae8e069fc98d45dc3d5daaa0628ca79
parent df262cd9
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -2076,22 +2076,23 @@ 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 (mFastScroller != null && (mItemCount != mOldItemCount || mDataChanged)) {
            mFastScroller.onItemCountChanged(mItemCount);
        }

        layoutChildren();
        mInLayout = false;

        mOverscrollMax = (b - t) / OVERSCROLL_LIMIT_DIVISOR;

        // TODO: Move somewhere sane. This doesn't belong in onLayout().
        if (mFastScroller != null) {
            mFastScroller.onItemCountChanged(getChildCount(), mItemCount);
        }
    }

    /**
+19 −11
Original line number Diff line number Diff line
@@ -224,6 +224,8 @@ class FastScroller {
            mHasPendingDrag = false;
        }
    };
    private int mOldItemCount;
    private int mOldChildCount;

    /**
     * Used to delay hiding fast scroll decorations.
@@ -248,6 +250,8 @@ class FastScroller {
    public FastScroller(AbsListView listView) {
        mList = listView;
        mOverlay = listView.getOverlay();
        mOldItemCount = listView.getCount();
        mOldChildCount = listView.getChildCount();

        final Context context = listView.getContext();
        mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
@@ -258,6 +262,7 @@ class FastScroller {
        final ImageView trackImage = new ImageView(context);
        mTrackImage = trackImage;

        updateLongList(mOldChildCount, mOldItemCount);
        int width = 0;

        // Add track to overlay if it has an image.
@@ -445,20 +450,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;