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

Commit 8542541b authored by Winson Chung's avatar Winson Chung
Browse files

End scroller if it has already reached the final position

- The system overscroller seems to take a long time to settle even
  after the final position has been reached, so if that has already
  happened and there is no edge effect, then just end the scroller.
- Remove unused code related to SmoothPageView

Bug: 184983443
Test: Quickswitch and ensure we finish the recents animation after it settles
Change-Id: I9fa72ddd6b6e0d38b6f622c776a2ac5f5b055760
parent bcf85de8
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -461,11 +461,6 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        }
    }

    // we moved this functionality to a helper function so SmoothPagedView can reuse it
    protected boolean computeScrollHelper() {
        return computeScrollHelper(true);
    }

    protected void announcePageForAccessibility() {
        if (isAccessibilityEnabled(getContext())) {
            // Notify the user when the page changes
@@ -473,7 +468,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        }
    }

    protected boolean computeScrollHelper(boolean shouldInvalidate) {
    protected boolean computeScrollHelper() {
        if (mScroller.computeScrollOffset()) {
            // Don't bother scrolling if the page does not need to be moved
            int oldPos = mOrientationHandler.getPrimaryScroll(this);
@@ -481,7 +476,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
            if (oldPos != newPos) {
                mOrientationHandler.set(this, VIEW_SCROLL_TO, mScroller.getCurrX());
            }
            if (shouldInvalidate) {

            if (mAllowOverScroll) {
                if (newPos < mMinScroll && oldPos >= mMinScroll) {
                    mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity());
@@ -492,12 +487,18 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
                }
            }

                invalidate();
            // If the scroller has scrolled to the final position and there is no edge effect, then
            // finish the scroller to skip waiting for additional settling
            int finalPos = mOrientationHandler.getPrimaryValue(mScroller.getFinalX(),
                    mScroller.getFinalY());
            if (newPos == finalPos && mEdgeGlowLeft.isFinished() && mEdgeGlowRight.isFinished()) {
                mScroller.abortAnimation();
            }

            invalidate();
            return true;
        } else if (mNextPage != INVALID_PAGE && shouldInvalidate) {
        } else if (mNextPage != INVALID_PAGE) {
            sendScrollAccessibilityEvent();

            int prevPage = mCurrentPage;
            mCurrentPage = validateNewPage(mNextPage);
            mNextPage = INVALID_PAGE;
+0 −4
Original line number Diff line number Diff line
@@ -1163,10 +1163,6 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
        mWallpaperOffset.syncWithScroll();
    }

    public void computeScrollWithoutInvalidation() {
        computeScrollHelper(false);
    }

    @Override
    public void announceForAccessibility(CharSequence text) {
        // Don't announce if apps is on top of us.
+1 −1

File changed.

Contains only whitespace changes.