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

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

Call Scene's exit action when use TransitionManager.go() with null transition

Bug: 65536124

When we pass null for TransitionManager.go() there is a special logic where we forgot to call previousScene.exit(), only newscene.enter() is called.

Test: added unit tests and tested manually
Change-Id: Ibd4d5a2cc17bbfe4aaa586357446da28d4b355af
parent 39a6834c
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -189,6 +189,8 @@ public class TransitionManager {
        final ViewGroup sceneRoot = scene.getSceneRoot();
        if (!sPendingTransitions.contains(sceneRoot)) {
            if (transition == null) {
                exitPreviousScene(sceneRoot);

                scene.enter();
            } else {
                sPendingTransitions.add(sceneRoot);
@@ -210,6 +212,14 @@ 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
    private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
        WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
@@ -339,11 +349,7 @@ public class TransitionManager {
            transition.captureValues(sceneRoot, true);
        }

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

    /**