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

Commit 6e6dc23c authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "DO NOT MERGE Quick fix for updating the FastScroller long list property" into klp-dev

parents e910a7ce bca20aaf
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;