diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 5cb6e8643e..eeac16917c 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -601,7 +601,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer, case QUICK_SWITCH_STATE_ORDINAL: { RecentsView rv = getOverviewPanel(); TaskView currentPageTask = rv.getCurrentPageTaskView(); - TaskView fallbackTask = rv.getTaskViewAt(0); + TaskView fallbackTask = rv.getFirstTaskView(); if (currentPageTask != null || fallbackTask != null) { TaskView taskToLaunch = currentPageTask; if (currentPageTask == null) { diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitOverviewStateTouchHelper.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitOverviewStateTouchHelper.java index 4df0f63116..8c440b1955 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitOverviewStateTouchHelper.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitOverviewStateTouchHelper.java @@ -50,7 +50,7 @@ public final class PortraitOverviewStateTouchHelper { boolean canInterceptTouch(MotionEvent ev) { if (mRecentsView.getTaskViewCount() > 0) { // Allow swiping up in the gap between the hotseat and overview. - return ev.getY() >= mRecentsView.getTaskViewAt(0).getBottom(); + return ev.getY() >= mRecentsView.getFirstTaskView().getBottom(); } else { // If there are no tasks, we only intercept if we're below the hotseat height. return isTouchOverHotseat(mLauncher, ev); diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java index 31e4e33d89..d673720c2c 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java @@ -149,7 +149,7 @@ public class QuickSwitchTouchController extends AbstractStateChangeTouchControll mOverviewPanel.setFullscreenProgress(progress); if (progress > UPDATE_SYSUI_FLAGS_THRESHOLD) { int sysuiFlags = 0; - TaskView tv = mOverviewPanel.getTaskViewAt(0); + TaskView tv = mOverviewPanel.getFirstTaskView(); if (tv != null) { sysuiFlags = tv.getTaskContainers().getFirst().getSysUiStatusNavFlags(); } diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java index 202276e1e9..d62298775b 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java @@ -66,7 +66,7 @@ public abstract class TaskViewTouchController mRecentsView; private final Rect mTempRect = new Rect(); private final boolean mIsRtl; @@ -157,17 +157,15 @@ public abstract class TaskViewTouchController recentsView, View v, RemoteAnimationTarget[] targets) { if (v instanceof TaskView) { TaskView taskView = (TaskView) v; return recentsView.isTaskViewVisible(taskView) ? taskView : null; @@ -121,8 +121,7 @@ public final class TaskViewUtils { ComponentName componentName = itemInfo.getTargetComponent(); int userId = itemInfo.user.getIdentifier(); if (componentName != null) { - for (int i = 0; i < recentsView.getTaskViewCount(); i++) { - TaskView taskView = recentsView.getTaskViewAt(i); + for (TaskView taskView : recentsView.getTaskViews()) { if (recentsView.isTaskViewVisible(taskView)) { Task.TaskKey key = taskView.getFirstTask().key; if (componentName.equals(key.getComponent()) && userId == key.userId) { diff --git a/quickstep/src/com/android/quickstep/util/RecentsViewUtils.kt b/quickstep/src/com/android/quickstep/util/RecentsViewUtils.kt index 908e9f96b7..7393de448d 100644 --- a/quickstep/src/com/android/quickstep/util/RecentsViewUtils.kt +++ b/quickstep/src/com/android/quickstep/util/RecentsViewUtils.kt @@ -95,6 +95,9 @@ class RecentsViewUtils { ?: taskViews.firstOrNull { it !is DesktopTaskView } ?: taskViews.lastOrNull() + /** Returns the first TaskView if it exists, or null otherwise. */ + fun getFirstTaskView(taskViews: Iterable): TaskView? = taskViews.firstOrNull() + /** * Returns the first TaskView that is not large * diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 7097193def..3b463674b4 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -846,6 +846,11 @@ public abstract class RecentsView< private final Matrix mTmpMatrix = new Matrix(); + @Nullable + public TaskView getFirstTaskView() { + return mUtils.getFirstTaskView(getTaskViews()); + } + public RecentsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setEnableFreeScroll(true); @@ -1493,17 +1498,16 @@ public abstract class RecentsView< } /** - * Returns true if the task is in expected scroll position. - * - * @param taskIndex the index of the task + * Returns true if the given TaskView is in expected scroll position. */ - public boolean isTaskInExpectedScrollPosition(int taskIndex) { - return getScrollForPage(taskIndex) == getPagedOrientationHandler().getPrimaryScroll(this); + public boolean isTaskInExpectedScrollPosition(TaskView taskView) { + return getScrollForPage(indexOfChild(taskView)) + == getPagedOrientationHandler().getPrimaryScroll(this); } private boolean isFocusedTaskInExpectedScrollPosition() { TaskView focusedTask = getFocusedTaskView(); - return focusedTask != null && isTaskInExpectedScrollPosition(indexOfChild(focusedTask)); + return focusedTask != null && isTaskInExpectedScrollPosition(focusedTask); } /** @@ -4717,7 +4721,7 @@ public abstract class RecentsView< /** * Returns the current list of [TaskView] children. */ - private Iterable getTaskViews() { + public Iterable getTaskViews() { return mUtils.getTaskViews(getTaskViewCount(), this::requireTaskViewAt); }