am 70cb4f3e: Merge "Fix getChildVisibleRect to clip correctly." into lmp-mr1-dev

* commit '70cb4f3e7131cda1e58c1f6d422e296c4935289d':
  Fix getChildVisibleRect to clip correctly.
This commit is contained in:
George Mount
2014-11-12 22:46:08 +00:00
committed by Android Git Automerger

View File

@@ -5023,7 +5023,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
rect.set(r);
if (!child.hasIdentityMatrix()) {
child.getMatrix().mapRect(rect);
child.getMatrix().mapRect(rect);
}
int dx = child.mLeft - mScrollX;
@@ -5045,14 +5045,30 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
offset.y += dy;
}
if (rect.intersect(0, 0, mRight - mLeft, mBottom - mTop)) {
if (mParent == null) return true;
r.set((int) (rect.left + 0.5f), (int) (rect.top + 0.5f),
(int) (rect.right + 0.5f), (int) (rect.bottom + 0.5f));
return mParent.getChildVisibleRect(this, r, offset);
boolean rectIsVisible = true;
if (mParent instanceof ViewGroup && ((ViewGroup)mParent).getClipChildren()) {
// clipChildren clips to the child's bounds
rectIsVisible = rect.intersect(0, 0, mRight - mLeft, mBottom - mTop);
}
return false;
if (rectIsVisible && (mGroupFlags & CLIP_TO_PADDING_MASK) == CLIP_TO_PADDING_MASK) {
// Clip to padding
rectIsVisible = rect.intersect(mPaddingLeft, mPaddingTop,
mRight - mLeft - mPaddingLeft - mPaddingRight,
mBottom - mTop - mPaddingTop - mPaddingBottom);
}
if (rectIsVisible && mClipBounds != null) {
// Clip to clipBounds
rectIsVisible = rect.intersect(mClipBounds.left, mClipBounds.top, mClipBounds.right,
mClipBounds.bottom);
}
r.set((int) (rect.left + 0.5f), (int) (rect.top + 0.5f), (int) (rect.right + 0.5f),
(int) (rect.bottom + 0.5f));
if (rectIsVisible && mParent != null) {
rectIsVisible = mParent.getChildVisibleRect(this, r, offset);
}
return rectIsVisible;
}
/**