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

Commit db767aa5 authored by Jon Miranda's avatar Jon Miranda
Browse files

Fix bug where back swipe to icon in All Apps search result.

Issue is that All Apps is scaling during the animation, so when
FloatingIconView looks for it in the view hierarchy,
it's not in its final position.

This would be the cleanest approach for a scv2 fix

Bug: 213306709
Test: manual
Change-Id: Iaec77d15c9533edccd9c82164143af8fa522158f
Merged-In: Iaec77d15c9533edccd9c82164143af8fa522158f
parent 88c671ee
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -367,7 +367,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
        if (launcherClosing) {
            // Delay animation by a frame to avoid jank.
            Pair<AnimatorSet, Runnable> launcherContentAnimator =
                    getLauncherContentAnimator(true /* isAppOpening */, startDelay);
                    getLauncherContentAnimator(true /* isAppOpening */, startDelay, false);
            anim.play(launcherContentAnimator.first);
            anim.addListener(new AnimatorListenerAdapter() {
                @Override
@@ -464,9 +464,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
     * @param isAppOpening True when this is called when an app is opening.
     *                     False when this is called when an app is closing.
     * @param startDelay   Start delay duration.
     * @param skipAllAppsScale True if we want to avoid scaling All Apps
     */
    private Pair<AnimatorSet, Runnable> getLauncherContentAnimator(boolean isAppOpening,
            int startDelay) {
            int startDelay, boolean skipAllAppsScale) {
        AnimatorSet launcherAnimator = new AnimatorSet();
        Runnable endListener;

@@ -484,7 +485,6 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
            final float startAlpha = appsView.getAlpha();
            final float startScale = SCALE_PROPERTY.get(appsView);
            appsView.setAlpha(alphas[0]);
            SCALE_PROPERTY.set(appsView, scales[0]);

            ObjectAnimator alpha = ObjectAnimator.ofFloat(appsView, View.ALPHA, alphas);
            alpha.setDuration(CONTENT_ALPHA_DURATION);
@@ -496,12 +496,16 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                    appsView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
            });

            if (!skipAllAppsScale) {
                SCALE_PROPERTY.set(appsView, scales[0]);
                ObjectAnimator scale = ObjectAnimator.ofFloat(appsView, SCALE_PROPERTY, scales);
                scale.setInterpolator(AGGRESSIVE_EASE);
                scale.setDuration(CONTENT_SCALE_DURATION);
                launcherAnimator.play(scale);
            }

            launcherAnimator.play(alpha);
            launcherAnimator.play(scale);

            endListener = () -> {
                appsView.setAlpha(startAlpha);
@@ -1565,6 +1569,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                        || mLauncher.getWorkspace().isOverlayShown();

                boolean playWorkspaceReveal = true;
                boolean skipAllAppsScale = false;
                if (mFromUnlock) {
                    anim.play(getUnlockWindowAnimator(appTargets, wallpaperTargets));
                } else if (ENABLE_BACK_SWIPE_HOME_ANIMATION.get()
@@ -1579,6 +1584,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
                                true /* animateOverviewScrim */, launcherView).getAnimators());
                        // We play StaggeredWorkspaceAnim as a part of the closing window animation.
                        playWorkspaceReveal = false;
                    } else {
                        // Skip scaling all apps, otherwise FloatingIconView will get wrong
                        // layout bounds.
                        skipAllAppsScale = true;
                    }
                } else {
                    anim.play(getFallbackClosingWindowAnimators(appTargets));
@@ -1600,7 +1609,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener

                    if (mLauncher.isInState(LauncherState.ALL_APPS)) {
                        Pair<AnimatorSet, Runnable> contentAnimator =
                                getLauncherContentAnimator(false, LAUNCHER_RESUME_START_DELAY);
                                getLauncherContentAnimator(false, LAUNCHER_RESUME_START_DELAY,
                                        skipAllAppsScale);
                        anim.play(contentAnimator.first);
                        anim.addListener(new AnimatorListenerAdapter() {
                            @Override