Merge "Fix issues where the task was still touchable in overview" into sc-v2-dev
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index 67223c3..5bfecf2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -67,6 +67,8 @@
import com.android.wm.shell.transition.Transitions;
import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.concurrent.Executor;
/**
@@ -295,11 +297,15 @@
mRootTDAOrganizer.attachToDisplayArea(DEFAULT_DISPLAY, builder);
SurfaceControl sc = builder.build();
SurfaceControl.Transaction transaction = new SurfaceControl.Transaction();
+
+ // Ensure that we order these in the parent in the right z-order as their previous order
+ Arrays.sort(apps, (a1, a2) -> a1.prefixOrderIndex - a2.prefixOrderIndex);
+ int layer = 1;
for (RemoteAnimationTarget appTarget : apps) {
- // TODO(b/195958376) set the correct layer/z-order in transaction for the new surface
transaction.reparent(appTarget.leash, sc);
transaction.setPosition(appTarget.leash, appTarget.screenSpaceBounds.left,
appTarget.screenSpaceBounds.top);
+ transaction.setLayer(appTarget.leash, layer++);
}
transaction.apply();
transaction.close();
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index 9f24b50..f5bfef9 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -582,7 +582,7 @@
if (recentsAnimationController.updateInputConsumerForApp(
mRecentsAnimationInputConsumer.mWindowHandle)) {
mRecentsAnimationInputConsumer.show(mInputTransaction,
- recentsAnimationController.getHighestLayerActivity());
+ recentsAnimationController.getHighestLayerWindow());
mAddRecentsAnimationInputConsumerHandle = false;
}
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index d7dc306..e8d9c15b 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -1103,9 +1103,9 @@
}
/**
- * Returns the activity with the highest layer, or null if none is found.
+ * Returns the window with the highest layer, or null if none is found.
*/
- public ActivityRecord getHighestLayerActivity() {
+ public WindowState getHighestLayerWindow() {
int highestLayer = Integer.MIN_VALUE;
Task highestLayerTask = null;
for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
@@ -1116,7 +1116,7 @@
highestLayerTask = adapter.mTask;
}
}
- return highestLayerTask.getTopMostActivity();
+ return highestLayerTask.getTopMostActivity().getTopChild();
}
boolean isAnimatingTask(Task task) {