diff options
Diffstat (limited to 'core/java/android/view/ViewGroup.java')
-rw-r--r-- | core/java/android/view/ViewGroup.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 6ccac78..30d6ec7 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -3906,9 +3906,15 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager do { if (parent instanceof ViewGroup) { ViewGroup parentVG = (ViewGroup) parent; - parent = parentVG.invalidateChildInParentFast(left, top, dirty); - left = parentVG.mLeft; - top = parentVG.mTop; + if (parentVG.mLayerType != LAYER_TYPE_NONE) { + // Layered parents should be recreated, not just re-issued + parentVG.invalidate(); + parent = null; + } else { + parent = parentVG.invalidateChildInParentFast(left, top, dirty); + left = parentVG.mLeft; + top = parentVG.mTop; + } } else { // Reached the top; this calls into the usual invalidate method in // ViewRootImpl, which schedules a traversal @@ -4664,6 +4670,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public void clearDisappearingChildren() { if (mDisappearingChildren != null) { mDisappearingChildren.clear(); + invalidate(); } } @@ -4775,7 +4782,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager view.mParent = null; } } - mGroupFlags |= FLAG_INVALIDATE_REQUIRED; + invalidate(); } } } |