diff options
| author | 2024-06-03 07:05:53 +0000 | |
|---|---|---|
| committer | 2024-06-03 07:05:53 +0000 | |
| commit | f6fea76f009e6437a0844b3d3f1e235329b5c19a (patch) | |
| tree | 432cb77c9c875b5ca8089c4d73e9622c7416027b | |
| parent | fae1845a553bcb68f5d071b33dc9652176e20f1b (diff) | |
| parent | b1e397aa65e97feeeaa53d6f54da53959bdd37e9 (diff) | |
Merge "Fix focused error of embedded task fragments" into main am: a810b2ef95 am: b1e397aa65
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3111199
Change-Id: I2f3c661b99022abbc0fe59e570742a40652b5621
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index d4bbe846c4b9..61022cc971e2 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -1346,10 +1346,13 @@ class TaskFragment extends WindowContainer<WindowContainer> { // In a multi-resumed environment, like in a freeform device, the top // activity can be resumed, but it might not be the focused app. - // Set focused app when top activity is resumed - if (taskDisplayArea.inMultiWindowMode() && taskDisplayArea.mDisplayContent != null - && taskDisplayArea.mDisplayContent.mFocusedApp != next) { - taskDisplayArea.mDisplayContent.setFocusedApp(next); + // Set focused app when top activity is resumed. However, we shouldn't do it for a + // same task because it can break focused state. (e.g. activity embedding) + if (taskDisplayArea.inMultiWindowMode() && taskDisplayArea.mDisplayContent != null) { + final ActivityRecord focusedApp = taskDisplayArea.mDisplayContent.mFocusedApp; + if (focusedApp == null || focusedApp.getTask() != next.getTask()) { + taskDisplayArea.mDisplayContent.setFocusedApp(next); + } } ProtoLog.d(WM_DEBUG_STATES, "resumeTopActivity: Top activity " + "resumed %s", next); |