diff options
| author | Svetoslav <svetoslavganov@google.com> | 2013-06-18 16:29:25 -0700 |
|---|---|---|
| committer | Svetoslav <svetoslavganov@google.com> | 2013-06-18 16:36:15 -0700 |
| commit | 9dafebb8172d767d640c526d717eaef6a52167f3 (patch) | |
| tree | f417930e30963365cdce303142e8964a502baba6 /core/java/android/view/ViewRootImpl.java | |
| parent | 9829016e5b629f4e459c5ce597023edd17b55cd1 (diff) | |
Correctly update the source of recurring subtree change accessibility events.
Change-Id: I0b0fd9224a5208b274e5c889a27417ef13579849
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 9ec90ef4d186..e62abbe5ec57 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -6442,15 +6442,18 @@ public final class ViewRootImpl implements ViewParent, public void runOrPost(View source) { if (mSource != null) { - mSource = getCommonPredecessor(mSource, source); + // If there is no common predecessor, then mSource points to + // a removed view, hence in this case always prefer the source. + View predecessor = getCommonPredecessor(mSource, source); + mSource = (predecessor != null) ? predecessor : source; return; } mSource = source; final long timeSinceLastMillis = SystemClock.uptimeMillis() - mLastEventTimeMillis; final long minEventIntevalMillis = ViewConfiguration.getSendRecurringAccessibilityEventsInterval(); - mSource.removeCallbacks(this); if (timeSinceLastMillis >= minEventIntevalMillis) { + mSource.removeCallbacks(this); run(); } else { mSource.postDelayed(this, minEventIntevalMillis - timeSinceLastMillis); |
