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

Commit dbed27e5 authored by Alan Viverette's avatar Alan Viverette
Browse files

DO NOT MERGE. Fix number picker accessibility focus.

The node bounds populated by the child TextView were not consistent
with the bounds manually populated for its parent NumberPicker.

Bug: 9072003
Change-Id: Icbfa64f52cf11fd39c7243936227b8ba36280c3c
parent 366b97ba
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -2185,7 +2185,10 @@ public class NumberPicker extends LinearLayout {
                            mScrollX + (mRight - mLeft),
                            mTopSelectionDividerTop + mSelectionDividerHeight);
                case VIRTUAL_VIEW_ID_INPUT:
                    return createAccessibiltyNodeInfoForInputText();
                    return createAccessibiltyNodeInfoForInputText(mScrollX,
                            mTopSelectionDividerTop + mSelectionDividerHeight,
                            mScrollX + (mRight - mLeft),
                            mBottomSelectionDividerBottom - mSelectionDividerHeight);
                case VIRTUAL_VIEW_ID_INCREMENT:
                    return createAccessibilityNodeInfoForVirtualButton(VIRTUAL_VIEW_ID_INCREMENT,
                            getVirtualIncrementButtonText(), mScrollX,
@@ -2446,7 +2449,8 @@ public class NumberPicker extends LinearLayout {
            }
        }

        private AccessibilityNodeInfo createAccessibiltyNodeInfoForInputText() {
        private AccessibilityNodeInfo createAccessibiltyNodeInfoForInputText(
                int left, int top, int right, int bottom) {
            AccessibilityNodeInfo info = mInputText.createAccessibilityNodeInfo();
            info.setSource(NumberPicker.this, VIRTUAL_VIEW_ID_INPUT);
            if (mAccessibilityFocusedView != VIRTUAL_VIEW_ID_INPUT) {
@@ -2455,6 +2459,15 @@ public class NumberPicker extends LinearLayout {
            if (mAccessibilityFocusedView == VIRTUAL_VIEW_ID_INPUT) {
                info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
            }
            Rect boundsInParent = mTempRect;
            boundsInParent.set(left, top, right, bottom);
            info.setVisibleToUser(isVisibleToUser(boundsInParent));
            info.setBoundsInParent(boundsInParent);
            Rect boundsInScreen = boundsInParent;
            int[] locationOnScreen = mTempArray;
            getLocationOnScreen(locationOnScreen);
            boundsInScreen.offset(locationOnScreen[0], locationOnScreen[1]);
            info.setBoundsInScreen(boundsInScreen);
            return info;
        }