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

Commit 4ce106f5 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Fixing some minor issues in accessibility focus." into jb-dev

parents 7e12cf03 f76a83cf
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -4325,7 +4325,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
        if (gainFocus) {
            if (AccessibilityManager.getInstance(mContext).isEnabled()) {
                sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
                requestAccessibilityFocus();
            }
        }
@@ -6183,8 +6182,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
            invalidate();
            sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
            notifyAccessibilityStateChanged();
            // Try to give input focus to this view - not a descendant.
            requestFocusNoSearch(View.FOCUS_DOWN, null);
            return true;
        }
        return false;
@@ -6230,11 +6227,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
    private void requestAccessibilityFocusFromHover() {
        if (includeForAccessibility() && isActionableForAccessibility()) {
            requestAccessibilityFocus();
            requestFocusNoSearch(View.FOCUS_DOWN, null);
        } else {
            if (mParent != null) {
                View nextFocus = mParent.findViewToTakeAccessibilityFocusFromHover(this, this);
                if (nextFocus != null) {
                    nextFocus.requestAccessibilityFocus();
                    nextFocus.requestFocusNoSearch(View.FOCUS_DOWN, null);
                }
            }
        }
+16 −11
Original line number Diff line number Diff line
@@ -1352,24 +1352,23 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            case ACCESSIBILITY_FOCUS_FORWARD: {
                ViewRootImpl viewRootImpl = getViewRootImpl();
                if (viewRootImpl == null) {
                    break;
                    return null;
                }
                View currentFocus = viewRootImpl.getAccessibilityFocusedHost();
                if (currentFocus == null) {
                    break;
                    return super.focusSearch(this, direction);
                }
                // If we have the focus try giving it to the first child.
                if (currentFocus == this) {
                    final int firstVisiblePosition = getFirstVisiblePosition();
                    if (firstVisiblePosition >= 0) {
                    if (getChildCount() > 0) {
                        return getChildAt(0);
                    }
                    return null;
                    return super.focusSearch(this, direction);
                }
                // Find the item that has accessibility focus.
                final int currentPosition = getPositionForView(currentFocus);
                if (currentPosition < 0 || currentPosition >= getCount()) {
                    break;
                    return super.focusSearch(this, direction);
                }
                // Try to advance focus in the current item.
                View currentItem = getChildAt(currentPosition - getFirstVisiblePosition());
@@ -1386,25 +1385,31 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                final int nextPosition = currentPosition - getFirstVisiblePosition() + 1;
                if (nextPosition < getChildCount()) {
                    return getChildAt(nextPosition);
                } else {
                    return super.focusSearch(this, direction);
                }
            }
            } break;
            case ACCESSIBILITY_FOCUS_BACKWARD: {
                ViewRootImpl viewRootImpl = getViewRootImpl();
                if (viewRootImpl == null) {
                    break;
                    return null;
                }
                View currentFocus = viewRootImpl.getAccessibilityFocusedHost();
                if (currentFocus == null) {
                    break;
                    return super.focusSearch(this, direction);
                }
                // If we have the focus do a generic search.
                if (currentFocus == this) {
                    final int lastChildIndex = getChildCount() - 1;
                    if (lastChildIndex >= 0) {
                        return getChildAt(lastChildIndex);
                    }
                    return super.focusSearch(this, direction);
                }
                // Find the item that has accessibility focus.
                final int currentPosition = getPositionForView(currentFocus);
                if (currentPosition < 0 || currentPosition >= getCount()) {
                    break;
                    return super.focusSearch(this, direction);
                }
                // Try to advance focus in the current item.
                View currentItem = getChildAt(currentPosition - getFirstVisiblePosition());
@@ -1422,7 +1427,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                if (nextPosition >= 0) {
                    return getChildAt(nextPosition);
                } else {
                    return this;
                    return super.focusSearch(this, direction);
                }
            }
        }