Merge "Force invalidates on non-visible views to traverse the hierarchy"
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user