diff options
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 21 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 11 | 
2 files changed, 32 insertions, 0 deletions
| diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index cadf2aba0cec..9737a5a9bc07 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -628,6 +628,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te      private int mGlowPaddingLeft;      private int mGlowPaddingRight; +    private int mLastAccessibilityScrollEventFromIndex; +    private int mLastAccessibilityScrollEventToIndex; +      /**       * Interface definition for a callback to be invoked when the list or grid       * has been scrolled. @@ -1265,6 +1268,24 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te      }      @Override +    public void sendAccessibilityEvent(int eventType) { +        // Since this class calls onScrollChanged even if the mFirstPosition and the +        // child count have not changed we will avoid sending duplicate accessibility +        // events. +        if (eventType == AccessibilityEvent.TYPE_VIEW_SCROLLED) { +            final int lastPosition = mFirstPosition + getChildCount(); +            if (mLastAccessibilityScrollEventFromIndex == mFirstPosition +                    && mLastAccessibilityScrollEventToIndex == lastPosition) { +                return;    +            } else { +                mLastAccessibilityScrollEventFromIndex = mFirstPosition; +                mLastAccessibilityScrollEventToIndex = lastPosition;        +            } +        } +        super.sendAccessibilityEvent(eventType); +    } + +    @Override      public void onInitializeAccessibilityEvent(AccessibilityEvent event) {          super.onInitializeAccessibilityEvent(event);          event.setScrollable(true); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 968d61215bc7..04cf69b48925 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8449,6 +8449,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener          info.setPassword(isPassword);      } +    @Override +    public void sendAccessibilityEvent(int eventType) { +        // Do not send scroll events since first they are not interesting for +        // accessibility and second such events a generated too frequently. +        // For details see the implementation of bringTextIntoView(). +        if (eventType == AccessibilityEvent.TYPE_VIEW_SCROLLED) { +            return; +        } +        super.sendAccessibilityEvent(eventType); +    } +      void sendAccessibilityEventTypeViewTextChanged(CharSequence beforeText,              int fromIndex, int removedCount, int addedCount) {          AccessibilityEvent event = |