diff options
| author | 2011-08-04 05:55:46 -0700 | |
|---|---|---|
| committer | 2011-08-04 05:55:46 -0700 | |
| commit | 7abaecc3dbb610b24e22685e6aa749c7011be1eb (patch) | |
| tree | e49cf08197999e1d7d05c58dc27a7b18ebc9e449 | |
| parent | 2c44b9221b6a8792bd1d8e4a210106af0071aa00 (diff) | |
| parent | 4e03f5910cf641e2610f4cbe3fc24d84c430d1e8 (diff) | |
Merge "Removing firing of spurious scroll accesibility events."
| -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 = |