From a998b5f86935d2d9272b796cabdecc2511b76778 Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Thu, 18 May 2017 16:19:23 +0000 Subject: [PATCH] Revert "NumberPicker a11y (and a11y-inspired) fixes" This reverts commit 1d359a6d3179b7e793fc4082237b001d7260c423. Bug: 38301562 Change-Id: I7a04f3068a8ecb0de63efcb82205b41916138a89 --- .../accessibility/AccessibilityEvent.java | 3 +- core/java/android/widget/NumberPicker.java | 49 +++++-------------- 2 files changed, 12 insertions(+), 40 deletions(-) diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java index 79c81b2a2f184..f8a13a373aecc 100644 --- a/core/java/android/view/accessibility/AccessibilityEvent.java +++ b/core/java/android/view/accessibility/AccessibilityEvent.java @@ -630,8 +630,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800; /** - * Represents the event of scrolling a view. This event type is generally not sent directly. - * @see View#onScrollChanged(int, int, int, int) + * Represents the event of scrolling a view. */ public static final int TYPE_VIEW_SCROLLED = 0x00001000; diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java index d456989eb50a9..7bdd6dadf415f 100644 --- a/core/java/android/widget/NumberPicker.java +++ b/core/java/android/widget/NumberPicker.java @@ -737,7 +737,6 @@ public class NumberPicker extends LinearLayout { mInputText.setFilters(new InputFilter[] { new InputTextFilter() }); - mInputText.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); mInputText.setRawInputType(InputType.TYPE_CLASS_NUMBER); mInputText.setImeOptions(EditorInfo.IME_ACTION_DONE); @@ -771,12 +770,6 @@ public class NumberPicker extends LinearLayout { if (getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) { setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); } - - // Should be focusable by default, as the text view whose visibility changes is focusable - if (getFocusable() == View.FOCUSABLE_AUTO) { - setFocusable(View.FOCUSABLE); - setFocusableInTouchMode(true); - } } @Override @@ -863,7 +856,7 @@ public class NumberPicker extends LinearLayout { switch (action) { case MotionEvent.ACTION_DOWN: { removeAllCallbacks(); - hideSoftInput(); + mInputText.setVisibility(View.INVISIBLE); mLastDownOrMoveEventY = mLastDownEventY = event.getY(); mLastDownEventTime = event.getEventTime(); mIgnoreMoveEvents = false; @@ -890,9 +883,11 @@ public class NumberPicker extends LinearLayout { mFlingScroller.forceFinished(true); mAdjustScroller.forceFinished(true); } else if (mLastDownEventY < mTopSelectionDividerTop) { + hideSoftInput(); postChangeCurrentByOneFromLongPress( false, ViewConfiguration.getLongPressTimeout()); } else if (mLastDownEventY > mBottomSelectionDividerBottom) { + hideSoftInput(); postChangeCurrentByOneFromLongPress( true, ViewConfiguration.getLongPressTimeout()); } else { @@ -1125,7 +1120,6 @@ public class NumberPicker extends LinearLayout { @Override public void scrollBy(int x, int y) { int[] selectorIndices = mSelectorIndices; - int startScrollOffset = mCurrentScrollOffset; if (!mWrapSelectorWheel && y > 0 && selectorIndices[SELECTOR_MIDDLE_ITEM_INDEX] <= mMinValue) { mCurrentScrollOffset = mInitialScrollOffset; @@ -1153,9 +1147,6 @@ public class NumberPicker extends LinearLayout { mCurrentScrollOffset = mInitialScrollOffset; } } - if (startScrollOffset != mCurrentScrollOffset) { - onScrollChanged(0, mCurrentScrollOffset, 0, startScrollOffset); - } } @Override @@ -1744,10 +1735,7 @@ public class NumberPicker extends LinearLayout { } int previous = mValue; mValue = current; - // If we're flinging, we'll update the text view at the end when it becomes visible - if (mScrollState != OnScrollListener.SCROLL_STATE_FLING) { - updateInputTextView(); - } + updateInputTextView(); if (notifyChange) { notifyChange(previous, current); } @@ -1764,7 +1752,7 @@ public class NumberPicker extends LinearLayout { */ private void changeValueByOne(boolean increment) { if (mHasSelectorWheel) { - hideSoftInput(); + mInputText.setVisibility(View.INVISIBLE); if (!moveToFinalScrollerPosition(mFlingScroller)) { moveToFinalScrollerPosition(mAdjustScroller); } @@ -1811,8 +1799,9 @@ public class NumberPicker extends LinearLayout { */ private void onScrollerFinished(Scroller scroller) { if (scroller == mFlingScroller) { - ensureScrollWheelAdjusted(); - updateInputTextView(); + if (!ensureScrollWheelAdjusted()) { + updateInputTextView(); + } onScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); } else { if (mScrollState != OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { @@ -1948,25 +1937,9 @@ public class NumberPicker extends LinearLayout { */ String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue]; - if (!TextUtils.isEmpty(text)) { - CharSequence beforeText = mInputText.getText(); - if (!text.equals(beforeText.toString())) { - mInputText.setText(text); - if (mAccessibilityNodeProvider != null) { - AccessibilityEvent event = AccessibilityEvent.obtain( - AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED); - mInputText.onInitializeAccessibilityEvent(event); - mInputText.onPopulateAccessibilityEvent(event); - event.setFromIndex(0); - event.setRemovedCount(beforeText.length()); - event.setAddedCount(text.length()); - event.setBeforeText(beforeText); - event.setSource(NumberPicker.this, - AccessibilityNodeProviderImpl.VIRTUAL_VIEW_ID_INPUT); - requestSendAccessibilityEvent(NumberPicker.this, event); - } - return true; - } + if (!TextUtils.isEmpty(text) && !text.equals(mInputText.getText().toString())) { + mInputText.setText(text); + return true; } return false;