Fix subsequent tabbing in recents from alt tab not working

Fix: 242114350
Test: Alt+tab to go to overview, and then keep tabbing to switch to the previous tasks

Change-Id: I03db23aa5424e46c0eb783379b0c5e959f75507f
This commit is contained in:
Tracy Zhou
2022-09-12 23:23:14 -07:00
parent a7be354913
commit d0f4896c11

View File

@@ -193,7 +193,20 @@ public class OverviewCommandHelper {
}
}
if (activityInterface.switchToRecentsIfVisible(() -> scheduleNextTask(cmd))) {
final Runnable completeCallback = () -> {
if (cmd.type == TYPE_SHOW_NEXT_FOCUS) {
RecentsView rv = activityInterface.getVisibleRecentsView();
// When the overview is launched via alt tab (cmd type is TYPE_SHOW_NEXT_FOCUS),
// the touch mode somehow is not change to false by the Android framework.
// The subsequent tab to go through tasks in overview can only be dispatched to
// focuses views, while focus can only be requested in
// {@link View#requestFocusNoSearch(int, Rect)} when touch mode is false. To note,
// here we launch overview from home.
rv.getViewRootImpl().touchModeChanged(false);
}
scheduleNextTask(cmd);
};
if (activityInterface.switchToRecentsIfVisible(completeCallback)) {
// If successfully switched, wait until animation finishes
return false;
}
@@ -268,6 +281,13 @@ public class OverviewCommandHelper {
RecentsView rv =
mOverviewComponentObserver.getActivityInterface().getVisibleRecentsView();
if (rv != null) {
// When the overview is launched via alt tab (cmd type is TYPE_SHOW_NEXT_FOCUS),
// the touch mode somehow is not change to false by the Android framework.
// The subsequent tab to go through tasks in overview can only be dispatched to
// focuses views, while focus can only be requested in
// {@link View#requestFocusNoSearch(int, Rect)} when touch mode is false. To note,
// here we launch overview with live tile.
rv.getViewRootImpl().touchModeChanged(false);
// Ensure that recents view has focus so that it receives the followup key inputs
TaskView taskView = rv.getNextTaskView();
if (taskView == null) {