From 8efc7aea52b46bf01f4aff43d930044e7e59bf39 Mon Sep 17 00:00:00 2001 From: Tiger Date: Wed, 31 May 2023 21:42:25 +0800 Subject: [PATCH] Put the change to top if it has FLAG_MOVED_TO_TOP This CL also refines the debug strings of TRANSIT_TO_FRONT and TRANSIT_TO_BACK to make the naming rule consistent. Fix: 283076194 Test: Swipe to home from a landscape app and quickly open it again. See if the home screen is on top of the app during the transition. Change-Id: Ic8dba8c19e2447d8192898642d8499dec2a344c3 --- core/java/android/window/TransitionInfo.java | 4 ++-- .../src/com/android/wm/shell/transition/Transitions.java | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java index 8c05130bf5fe4..a92ca8a4d3f26 100644 --- a/core/java/android/window/TransitionInfo.java +++ b/core/java/android/window/TransitionInfo.java @@ -424,8 +424,8 @@ public final class TransitionInfo implements Parcelable { case TRANSIT_NONE: return "NONE"; case TRANSIT_OPEN: return "OPEN"; case TRANSIT_CLOSE: return "CLOSE"; - case TRANSIT_TO_FRONT: return "SHOW"; - case TRANSIT_TO_BACK: return "HIDE"; + case TRANSIT_TO_FRONT: return "TO_FRONT"; + case TRANSIT_TO_BACK: return "TO_BACK"; case TRANSIT_CHANGE: return "CHANGE"; default: return ""; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index ce8d792ef302f..de20c2d900662 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -29,6 +29,7 @@ import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.view.WindowManager.fixScale; import static android.window.TransitionInfo.FLAG_IS_OCCLUDED; import static android.window.TransitionInfo.FLAG_IS_WALLPAPER; +import static android.window.TransitionInfo.FLAG_MOVED_TO_TOP; import static android.window.TransitionInfo.FLAG_NO_ANIMATION; import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT; @@ -554,7 +555,10 @@ public class Transitions implements RemoteCallable, layer = -zSplitLine - i; } } else if (mode == TRANSIT_OPEN || mode == TRANSIT_TO_FRONT) { - if (isOpening) { + if (isOpening + // This is for when an activity launches while a different transition is + // collecting. + || change.hasFlags(FLAG_MOVED_TO_TOP)) { // put on top layer = zSplitLine + numChanges - i; } else {