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

Commit 0cf6e6f0 authored by Andrey Kulikov's avatar Andrey Kulikov
Browse files

Keep scene change code in framework transitions in sync with AndroidX

Bug: 65536124
Test: cts/TransitionManagerTest
Change-Id: I976f07899c7d6ef68acbcc207ddb07ae5ac7f28f
parent 91485734
Loading
Loading
Loading
Loading
+10 −11
Original line number Original line Diff line number Diff line
@@ -188,8 +188,12 @@ public class TransitionManager {


        final ViewGroup sceneRoot = scene.getSceneRoot();
        final ViewGroup sceneRoot = scene.getSceneRoot();
        if (!sPendingTransitions.contains(sceneRoot)) {
        if (!sPendingTransitions.contains(sceneRoot)) {
            Scene oldScene = Scene.getCurrentScene(sceneRoot);
            if (transition == null) {
            if (transition == null) {
                exitPreviousScene(sceneRoot);
                // Notify old scene that it is being exited
                if (oldScene != null) {
                    oldScene.exit();
                }


                scene.enter();
                scene.enter();
            } else {
            } else {
@@ -198,7 +202,6 @@ public class TransitionManager {
                Transition transitionClone = transition.clone();
                Transition transitionClone = transition.clone();
                transitionClone.setSceneRoot(sceneRoot);
                transitionClone.setSceneRoot(sceneRoot);


                Scene oldScene = Scene.getCurrentScene(sceneRoot);
                if (oldScene != null && oldScene.isCreatedFromLayoutResource()) {
                if (oldScene != null && oldScene.isCreatedFromLayoutResource()) {
                    transitionClone.setCanRemoveViews(true);
                    transitionClone.setCanRemoveViews(true);
                }
                }
@@ -212,14 +215,6 @@ public class TransitionManager {
        }
        }
    }
    }


    private static void exitPreviousScene(final ViewGroup sceneRoot) {
        // Notify previous scene that it is being exited
        final Scene previousScene = Scene.getCurrentScene(sceneRoot);
        if (previousScene != null) {
            previousScene.exit();
        }
    }

    @UnsupportedAppUsage
    @UnsupportedAppUsage
    private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
    private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
        WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
        WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
@@ -349,7 +344,11 @@ public class TransitionManager {
            transition.captureValues(sceneRoot, true);
            transition.captureValues(sceneRoot, true);
        }
        }


        exitPreviousScene(sceneRoot);
        // Notify previous scene that it is being exited
        Scene previousScene = Scene.getCurrentScene(sceneRoot);
        if (previousScene != null) {
            previousScene.exit();
        }
    }
    }


    /**
    /**