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

Commit df2b9e14 authored by Alex Chau's avatar Alex Chau
Browse files

Fix animation problem when swipeing up app to screen edge and release

- Consider scroll diff between currentPage and primary scroll when calculating adjacent page offset
- Removed setEnableFreeScroll call in onPrepareGestureAnimation that calls setCurrentPage and causes jumping

Fixes: 197012570
Fixes: 195740577
Test: Swipe up from app to end of screen, adjacent task should come from screen edge, and app should snap smoothly to position
Test: Swipe up from app, scroll immediately, free scroll should be enabled
Test: Swipe up immediately after quick switch, task thumbnails are loaded
Change-Id: Id88266634183dfcb18d5ba8a803883b7d6f50ab4
Merged-In: I1964b8c3bd82b22396340d2352833b2aee73a6fc
(cherry picked from commit 8ebd11af)
parent f52fb6f6
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1764,8 +1764,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
            // When switching to tasks in quick switch, ensures the snapped page's scroll maintain
            // invariant between quick switch and overview, to ensure a smooth animation transition.
            updateGridProperties();
        } else if (endTarget == GestureState.GestureEndTarget.RECENTS) {
            setEnableFreeScroll(true);
        }
    }

@@ -2906,8 +2904,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        boolean isStartShift;
        if (midpointIndex > -1) {
            // When there is a midpoint reference task, adjacent tasks have less distance to travel
            // to reach offscreen. Offset the task position to the task's starting point.
            int midpointScroll = getScrollForPage(midpointIndex);
            // to reach offscreen. Offset the task position to the task's starting point, and offset
            // by current page's scroll diff.
            int midpointScroll = getScrollForPage(midpointIndex)
                    + mOrientationHandler.getPrimaryScroll(this) - getScrollForPage(mCurrentPage);

            getPersistentChildPosition(midpointIndex, midpointScroll, taskPosition);
            float midpointStart = mOrientationHandler.getStart(taskPosition);