From 7ac8a04cbee6c7c3d9f655914f83bc583ea9d82b Mon Sep 17 00:00:00 2001 From: Sam Cackett Date: Wed, 7 May 2025 17:57:12 +0100 Subject: [PATCH] Use TaskViews only for RecentsView CollectionInfo getAccessibilityChildren includes the add desktop and clear all buttons in the collection, so the list read outs are 2 bigger than they should be Fix: 411430606 Flag: EXEMPT. Bugfix Test: Manual. Talkback Change-Id: I3dbc4a9692396f7d8c094dd245745b878833c1a6 --- .../android/quickstep/views/RecentsView.java | 23 +++---------------- .../com/android/quickstep/views/TaskView.kt | 4 +++- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 7dba252137..c9f51d0644 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -5879,36 +5879,19 @@ public abstract class RecentsView< @Override public void addChildrenForAccessibility(ArrayList outChildren) { - outChildren.addAll(getAccessibilityChildren()); - } - - public List getAccessibilityChildren() { - return mUtils.getAccessibilityChildren(); + outChildren.addAll(mUtils.getAccessibilityChildren()); } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); + // We only care about TaskView's for the `CollectionInfo` that Talkback uses to read out. final AccessibilityNodeInfo.CollectionInfo collectionInfo = new AccessibilityNodeInfo.CollectionInfo( - 1, getAccessibilityChildren().size(), false); + 1, getTaskViewCount(), false); info.setCollectionInfo(collectionInfo); } - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - super.onInitializeAccessibilityEvent(event); - event.setScrollable(hasTaskViews()); - - if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) { - final List accessibilityChildren = getAccessibilityChildren(); - final int[] visibleTasks = getVisibleChildrenRange(); - event.setFromIndex(accessibilityChildren.indexOf(getChildAt(visibleTasks[1]))); - event.setToIndex(accessibilityChildren.indexOf(getChildAt(visibleTasks[0]))); - event.setItemCount(accessibilityChildren.size()); - } - } - @Override public CharSequence getAccessibilityClassName() { // To hear position-in-list related feedback from Talkback. diff --git a/quickstep/src/com/android/quickstep/views/TaskView.kt b/quickstep/src/com/android/quickstep/views/TaskView.kt index 21905dbda0..c2ca9e1d0c 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.kt +++ b/quickstep/src/com/android/quickstep/views/TaskView.kt @@ -753,7 +753,9 @@ constructor( AccessibilityNodeInfo.CollectionItemInfo( 0, 1, - it.getAccessibilityChildren().indexOf(this@TaskView), + // We only care about TaskView's for the `CollectionInfo` that Talkback uses + // to read out. + it.taskViews.reversed().indexOf(this@TaskView), 1, false, )