diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskDisplayArea.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 8ad76a3eb327..79be9463aa05 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1074,10 +1074,14 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { // Use launch-adjacent-flag-root if launching with launch-adjacent flag. if ((launchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0 && mLaunchAdjacentFlagRootTask != null) { - // If the adjacent launch is coming from the same root, launch to adjacent root instead. - if (sourceTask != null && mLaunchAdjacentFlagRootTask.getAdjacentTaskFragment() != null + if (sourceTask != null && sourceTask == candidateTask) { + // Do nothing when task that is getting opened is same as the source. + } else if (sourceTask != null + && mLaunchAdjacentFlagRootTask.getAdjacentTaskFragment() != null && (sourceTask == mLaunchAdjacentFlagRootTask || sourceTask.isDescendantOf(mLaunchAdjacentFlagRootTask))) { + // If the adjacent launch is coming from the same root, launch to + // adjacent root instead. return mLaunchAdjacentFlagRootTask.getAdjacentTaskFragment().asTask(); } else { return mLaunchAdjacentFlagRootTask; |