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

Commit 8e8a376a authored by Tony Wickham's avatar Tony Wickham
Browse files

Fix quickswitch flickers/ignored swipes

- Don't set current page to running task when applying load plan,
  if we are already settling on a new task to launch.
- When starting a new task, finish to the running app if that's
  the task being started (should not happen with above change)
- When disabling free scroll mode, don't snap to a page if we're
  already on it. This was setting mNextPage so the first check
  was falsing.

Bug: 142068081
Change-Id: I5b392d9726a81c51718d2f94eee6cd4f78b61f69
(cherry picked from commit af33f2c9)
parent 2784315f
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -927,8 +927,16 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
            windowAnim.addListener(new AnimationSuccessListener() {
                @Override
                public void onAnimationSuccess(Animator animator) {
                    if (target == NEW_TASK && mRecentsView != null
                            && mRecentsView.getNextPage() == mRecentsView.getRunningTaskIndex()) {
                        // We are about to launch the current running task, so use LAST_TASK state
                        // instead of NEW_TASK. This could happen, for example, if our scroll is
                        // aborted after we determined the target to be NEW_TASK.
                        setStateOnUiThread(LAST_TASK.endState);
                    } else {
                        setStateOnUiThread(target.endState);
                    }
                }
            });
            windowAnim.start();
            mRunningWindowAnim = RunningWindowAnim.wrap(windowAnim);
+8 −6
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.quickstep.views;

import static androidx.dynamicanimation.animation.DynamicAnimation.MIN_VISIBLE_CHANGE_PIXELS;

import static com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS;
import static com.android.launcher3.InvariantDeviceProfile.CHANGE_FLAG_ICON_PARAMS;
import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
@@ -573,12 +572,15 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
            taskView.bind(task);
        }

        if (mNextPage == INVALID_PAGE) {
            // Set the current page to the running task, but not if settling on new task.
            TaskView runningTaskView = getRunningTaskView();
            if (runningTaskView != null) {
                setCurrentPage(indexOfChild(runningTaskView));
            } else if (getTaskViewCount() > 0) {
                setCurrentPage(indexOfChild(getTaskViewAt(0)));
            }
        }

        if (mIgnoreResetTaskId != -1 && getTaskView(mIgnoreResetTaskId) != ignoreResetTaskView) {
            // If the taskView mapping is changing, do not preserve the visuals. Since we are
+3 −1
Original line number Diff line number Diff line
@@ -1088,9 +1088,11 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        if (mFreeScroll) {
            setCurrentPage(getNextPage());
        } else if (wasFreeScroll) {
            if (getScrollForPage(getNextPage()) != getScrollX()) {
                snapToPage(getNextPage());
            }
        }
    }

    protected void setEnableOverscroll(boolean enable) {
        mAllowOverScroll = enable;