summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2013-06-18 16:29:25 -0700
committerSvetoslav <svetoslavganov@google.com>2013-06-18 16:36:15 -0700
commit9dafebb8172d767d640c526d717eaef6a52167f3 (patch)
treef417930e30963365cdce303142e8964a502baba6 /core/java/android/view/ViewRootImpl.java
parent9829016e5b629f4e459c5ce597023edd17b55cd1 (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.java7
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);