Merge "Force invalidates on non-visible views to traverse the hierarchy"

This commit is contained in:
Chet Haase
2012-07-09 10:25:44 -07:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 13 deletions

View File

@@ -4036,21 +4036,23 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
final int left = mLeft;
final int top = mTop;
if ((mGroupFlags & FLAG_CLIP_CHILDREN) != FLAG_CLIP_CHILDREN ||
dirty.intersect(0, 0, mRight - left, mBottom - top) ||
(mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION) {
mPrivateFlags &= ~DRAWING_CACHE_VALID;
location[CHILD_LEFT_INDEX] = left;
location[CHILD_TOP_INDEX] = top;
if (mLayerType != LAYER_TYPE_NONE) {
mPrivateFlags |= INVALIDATED;
mLocalDirtyRect.union(dirty);
if ((mGroupFlags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN) {
if (!dirty.intersect(0, 0, mRight - left, mBottom - top)) {
dirty.setEmpty();
}
return mParent;
}
mPrivateFlags &= ~DRAWING_CACHE_VALID;
location[CHILD_LEFT_INDEX] = left;
location[CHILD_TOP_INDEX] = top;
if (mLayerType != LAYER_TYPE_NONE) {
mPrivateFlags |= INVALIDATED;
mLocalDirtyRect.union(dirty);
}
return mParent;
} else {
mPrivateFlags &= ~DRAWN & ~DRAWING_CACHE_VALID;

View File

@@ -868,6 +868,8 @@ public final class ViewRootImpl implements ViewParent,
if (dirty == null) {
invalidate();
return null;
} else if (dirty.isEmpty()) {
return null;
}
if (mCurScrollY != 0 || mTranslator != null) {