Merge "Clear preferred top focusable root task" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-21 04:17:50 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 0 deletions

View File

@@ -3071,6 +3071,11 @@ class Task extends WindowContainer<WindowContainer> {
focusableTask = mRootWindowContainer.getNextFocusableRootTask(this, !allowFocusSelf); focusableTask = mRootWindowContainer.getNextFocusableRootTask(this, !allowFocusSelf);
} }
if (focusableTask == null) { if (focusableTask == null) {
final TaskDisplayArea taskDisplayArea = getDisplayArea();
if (taskDisplayArea != null) {
// Clear the recorded task since there is no next focusable task.
taskDisplayArea.clearPreferredTopFocusableRootTask();
}
return null; return null;
} }

View File

@@ -143,6 +143,7 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
* unable to resume target root task properly when there are other focusable always-on-top * unable to resume target root task properly when there are other focusable always-on-top
* root tasks. * root tasks.
*/ */
@VisibleForTesting
Task mPreferredTopFocusableRootTask; Task mPreferredTopFocusableRootTask;
/** /**
@@ -2130,6 +2131,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
&& mDisplayContent.getOrientationRequestingTaskDisplayArea() == this; && mDisplayContent.getOrientationRequestingTaskDisplayArea() == this;
} }
void clearPreferredTopFocusableRootTask() {
mPreferredTopFocusableRootTask = null;
}
@Override @Override
boolean isTaskDisplayArea() { boolean isTaskDisplayArea() {
return true; return true;