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

Commit 1eac187d authored by Selim Cinek's avatar Selim Cinek Committed by Android (Google) Code Review
Browse files

Merge "Opimized the number of calls to updateChildren."

parents a3fd4b0c 319bdc45
Loading
Loading
Loading
Loading
+21 −18
Original line number Diff line number Diff line
@@ -106,13 +106,15 @@ public class NotificationStackScrollLayout extends ViewGroup
    private ExpandableView.OnHeightChangedListener mOnHeightChangedListener;
    private boolean mChildHierarchyDirty;
    private boolean mIsExpanded = true;
    private ViewTreeObserver.OnPreDrawListener mAfterLayoutPreDrawListener
    private boolean mChildrenNeedUpdate;
    private ViewTreeObserver.OnPreDrawListener mPreDrawListener
            = new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            updateScrollPositionIfNecessary();
            if (mChildrenNeedUpdate) {
                updateChildren();
            getViewTreeObserver().removeOnPreDrawListener(this);
                mChildrenNeedUpdate = false;
            }
            return true;
        }
    };
@@ -179,6 +181,7 @@ public class NotificationStackScrollLayout extends ViewGroup
        mPaddingBetweenElements = context.getResources()
                .getDimensionPixelSize(R.dimen.notification_padding);
        mStackScrollAlgorithm = new StackScrollAlgorithm(context);
        getViewTreeObserver().addOnPreDrawListener(mPreDrawListener);
    }

    @Override
@@ -206,7 +209,8 @@ public class NotificationStackScrollLayout extends ViewGroup
        }
        setMaxLayoutHeight(getHeight() - mEmptyMarginBottom);
        updateContentHeight();
        getViewTreeObserver().addOnPreDrawListener(mAfterLayoutPreDrawListener);
        updateScrollPositionIfNecessary();
        requestChildrenUpdate();
    }

    public void setChildLocationsChangedListener(OnChildLocationsChangedListener listener) {
@@ -270,6 +274,11 @@ public class NotificationStackScrollLayout extends ViewGroup
        }
    }

    private void requestChildrenUpdate() {
        mChildrenNeedUpdate = true;
        invalidate();
    }

    private boolean isCurrentlyAnimating() {
        return mStateAnimator.isRunning();
    }
@@ -290,7 +299,7 @@ public class NotificationStackScrollLayout extends ViewGroup
            mTopPadding = topPadding;
            updateAlgorithmHeightAndPadding();
            updateContentHeight();
            updateChildren();
            requestChildrenUpdate();
        }
    }

@@ -325,7 +334,7 @@ public class NotificationStackScrollLayout extends ViewGroup
        if (stackHeight != mCurrentStackHeight) {
            mCurrentStackHeight = stackHeight;
            updateAlgorithmHeightAndPadding();
            updateChildren();
            requestChildrenUpdate();
        }
    }

@@ -659,19 +668,13 @@ public class NotificationStackScrollLayout extends ViewGroup
        }
    }

    public void customScrollBy(int y) {
        mOwnScrollY += y;
        updateChildren();
    }

    public void customScrollTo(int y) {
    private void customScrollTo(int y) {
        mOwnScrollY = y;
        updateChildren();
    }

    @Override
    protected void onOverScrolled(int scrollX, int scrollY,
                                  boolean clampedX, boolean clampedY) {
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        // Treat animating scrolls differently; see #computeScroll() for why.
        if (!mScroller.isFinished()) {
            final int oldX = mScrollX;
@@ -1115,7 +1118,7 @@ public class NotificationStackScrollLayout extends ViewGroup
            if (mOnHeightChangedListener != null) {
                mOnHeightChangedListener.onHeightChanged(view);
            }
            updateChildren();
            requestChildrenUpdate();
        }
    }

@@ -1125,7 +1128,7 @@ public class NotificationStackScrollLayout extends ViewGroup
    }

    public void onChildAnimationFinished() {
        updateChildren();
        requestChildrenUpdate();
        mAnimationEvents.clear();
    }