summaryrefslogtreecommitdiff
path: root/core/java/android/widget/StackView.java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2011-03-08 13:33:29 -0800
committerAdam Cohen <adamcohen@google.com>2011-03-08 14:13:29 -0800
commit321aa2b0258691c55843dff919eb2705d069167a (patch)
treede8bc4db43b1828bb6d9a026ee9c589e2bfe932e /core/java/android/widget/StackView.java
parent6478e4f0b0a6d34251ca0125eb6067f038e344aa (diff)
Fixing inconsistency between invalidate region and draw region
Change-Id: I84458b31b4d3e8c305d64eb25e352fc4aba933d0
Diffstat (limited to 'core/java/android/widget/StackView.java')
-rw-r--r--core/java/android/widget/StackView.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java
index bab469b01cf9..21c61bdf67ab 100644
--- a/core/java/android/widget/StackView.java
+++ b/core/java/android/widget/StackView.java
@@ -531,6 +531,8 @@ public class StackView extends AdapterViewAnimator {
@Override
protected void dispatchDraw(Canvas canvas) {
+ boolean expandClipRegion = false;
+
canvas.getClipBounds(stackInvalidateRect);
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
@@ -540,12 +542,22 @@ public class StackView extends AdapterViewAnimator {
child.getAlpha() == 0f || child.getVisibility() != VISIBLE) {
lp.resetInvalidateRect();
}
- stackInvalidateRect.union(lp.getInvalidateRect());
+ Rect childInvalidateRect = lp.getInvalidateRect();
+ if (!childInvalidateRect.isEmpty()) {
+ expandClipRegion = true;
+ stackInvalidateRect.union(childInvalidateRect);
+ }
+ }
+
+ // We only expand the clip bounds if necessary.
+ if (expandClipRegion) {
+ canvas.save(Canvas.CLIP_SAVE_FLAG);
+ canvas.clipRect(stackInvalidateRect, Region.Op.UNION);
+ super.dispatchDraw(canvas);
+ canvas.restore();
+ } else {
+ super.dispatchDraw(canvas);
}
- canvas.save(Canvas.CLIP_SAVE_FLAG);
- canvas.clipRect(stackInvalidateRect, Region.Op.UNION);
- super.dispatchDraw(canvas);
- canvas.restore();
}
private void onLayout() {