diff options
| author | 2021-03-30 17:04:56 +0000 | |
|---|---|---|
| committer | 2021-03-30 17:04:56 +0000 | |
| commit | f61739c78db42d278d31e14562db38ac99076b9b (patch) | |
| tree | 671a678cecbecc2bbde6e39048932ed777780b88 | |
| parent | 11ce805c9f1eb66752a5829e3cd26576f6f4ae09 (diff) | |
| parent | 78a9f2828223391664829b4f420b93f0c6fa3964 (diff) | |
Merge "DO NOT MERGE Reset top focused root task when task hidden" into rvc-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 10 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskDisplayArea.java | 5 |
2 files changed, 8 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index db3c74fc94af..b19b8c1ce10b 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -4597,11 +4597,11 @@ class Task extends WindowContainer<WindowContainer> { } final boolean wasHidden = isForceHidden(); mForceHiddenFlags = newFlags; - if (wasHidden && isFocusableAndVisible()) { - // The change in force-hidden state will change visibility without triggering a stack - // order change, so we should reset the preferred top focusable stack to ensure it's not - // used if a new activity is started from this task. - getDisplayArea().resetPreferredTopFocusableStackIfBelow(this); + if (wasHidden != isForceHidden() && isTopActivityFocusable()) { + // The change in force-hidden state will change visibility without triggering a root + // task order change, so we should reset the preferred top focusable root task to ensure + // it's not used if a new activity is started from this task. + getDisplayArea().resetPreferredTopFocusableRootTaskIfNeeded(this); } return true; } diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 79f3b8340b21..676d7e507141 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -773,9 +773,10 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> { onStackOrderChanged(stack); } - void resetPreferredTopFocusableStackIfBelow(Task task) { + /** Reset the mPreferredTopFocusableRootTask if it is or below the given task. */ + void resetPreferredTopFocusableRootTaskIfNeeded(Task task) { if (mPreferredTopFocusableStack != null - && mPreferredTopFocusableStack.compareTo(task) < 0) { + && mPreferredTopFocusableStack.compareTo(task) <= 0) { mPreferredTopFocusableStack = null; } } |