Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11f796ed authored by Alan Viverette's avatar Alan Viverette
Browse files

Fix restoration of virtual accessibility focus in ListView.

BUG: 8630013
Change-Id: Ifb7281cc4e8537b8c26040abd2abb25663ac3d21
parent e4753968
Loading
Loading
Loading
Loading
+12 −5
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ import android.view.ViewParent;
import android.view.ViewRootImpl;
import android.view.ViewRootImpl;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeProvider;
import android.widget.RemoteViews.RemoteView;
import android.widget.RemoteViews.RemoteView;


import java.util.ArrayList;
import java.util.ArrayList;
@@ -1715,11 +1716,17 @@ public class ListView extends AbsListView {
            }
            }


            // Attempt to restore accessibility focus.
            // Attempt to restore accessibility focus.
            if (accessibilityFocusLayoutRestoreNode != null) {
            if (accessibilityFocusLayoutRestoreView != null) {
                accessibilityFocusLayoutRestoreNode.performAction(
                final AccessibilityNodeProvider provider =
                        AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
                        accessibilityFocusLayoutRestoreView.getAccessibilityNodeProvider();
            } else if (accessibilityFocusLayoutRestoreView != null) {
                if ((accessibilityFocusLayoutRestoreNode != null) && (provider != null)) {
                    final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId(
                            accessibilityFocusLayoutRestoreNode.getSourceNodeId());
                    provider.performAction(virtualViewId,
                            AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null);
                } else {
                    accessibilityFocusLayoutRestoreView.requestAccessibilityFocus();
                    accessibilityFocusLayoutRestoreView.requestAccessibilityFocus();
                }
            } else if (accessibilityFocusPosition != INVALID_POSITION) {
            } else if (accessibilityFocusPosition != INVALID_POSITION) {
                // Bound the position within the visible children.
                // Bound the position within the visible children.
                final int position = MathUtils.constrain(
                final int position = MathUtils.constrain(