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

Commit b35f50cf authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Do not reset the previous state animation, if it is a part of the new state animaiton

Change-Id: Ic433db8cd2b0701923185d0a2db2a4361567437f
parent 55156007
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -261,6 +261,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
            return false;
        }

        Animator childStateAnimation = null;
        // Found a visible recents task that matches the opening app, lets launch the app from there
        Animator launcherAnim;
        final AnimatorListenerAdapter windowAnimEndListener;
@@ -276,6 +277,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
                    mLauncher.getStateManager()
                            .createAnimationToNewWorkspace(NORMAL, RECENTS_LAUNCH_DURATION);
            controller.dispatchOnStart();
            childStateAnimation = controller.getOriginalTarget();
            launcherAnim = controller.getAnimationPlayer().setDuration(RECENTS_LAUNCH_DURATION);
            windowAnimEndListener = new AnimatorListenerAdapter() {
                @Override
@@ -291,7 +293,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag
        // Set the current animation first, before adding windowAnimEndListener. Setting current
        // animation adds some listeners which need to be called before windowAnimEndListener
        // (the ordering of listeners matter in this case).
        mLauncher.getStateManager().setCurrentAnimation(target);
        mLauncher.getStateManager().setCurrentAnimation(target, childStateAnimation);
        target.addListener(windowAnimEndListener);
        return true;
    }
+10 −1
Original line number Diff line number Diff line
@@ -354,8 +354,17 @@ public class LauncherStateManager {
    /**
     * Sets the animation as the current state animation, i.e., canceled when
     * starting another animation and may block some launcher interactions while running.
     *
     * @param childAnimations Set of animations with the new target is controlling.
     */
    public void setCurrentAnimation(AnimatorSet anim) {
    public void setCurrentAnimation(AnimatorSet anim, Animator... childAnimations) {
        for (Animator childAnim : childAnimations) {
            if (childAnim != null && mConfig.mCurrentAnimation == childAnim) {
                mConfig.mCurrentAnimation.removeListener(mConfig);
                mConfig.mCurrentAnimation = null;
                break;
            }
        }
        boolean reapplyNeeded = mConfig.mCurrentAnimation != null;
        cancelAnimation();
        if (reapplyNeeded) {