diff options
| author | 2012-10-05 20:04:37 -0700 | |
|---|---|---|
| committer | 2012-10-05 20:04:37 -0700 | |
| commit | d9c99124d4870361c7c1e28fb78adf245eb1305a (patch) | |
| tree | 199280b7928a833f12938cdb59b8d8a7611d7f01 | |
| parent | 4d12d5be8fafc7bfe2f677357d326514ad5986e3 (diff) | |
| parent | c8860602726d771c69a3fefedfa03419d1c03b1c (diff) | |
Merge "Incorrect temporary detach of accessibility focused view may lead to a crash." into jb-mr1-dev
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 2 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 726fa28f2ee3..db1c00aeccd2 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -3912,7 +3912,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @see #removeDetachedView(View, boolean) */ protected void detachViewFromParent(View child) { - child.clearAccessibilityFocus(); removeFromArray(indexOfChild(child)); } @@ -3934,7 +3933,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @see #removeDetachedView(View, boolean) */ protected void detachViewFromParent(int index) { - getChildAt(index).clearAccessibilityFocus(); removeFromArray(index); } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index be2d5b3c8add..04752832aea0 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -2322,7 +2322,13 @@ public final class ViewRootImpl implements ViewParent, mAccessibilityFocusedHost.getDrawingRect(bounds); if (mView instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) mView; - viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds); + try { + viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds); + } catch (IllegalArgumentException iae) { + Log.e(TAG, "Temporary detached view that was neither removed not reattached: " + + mAccessibilityFocusedHost); + return; + } } } else { if (mAccessibilityFocusedVirtualView == null) { |