diff options
author | Romain Guy <romainguy@android.com> | 2009-07-22 11:35:49 -0700 |
---|---|---|
committer | Romain Guy <romainguy@android.com> | 2009-07-22 11:35:49 -0700 |
commit | 5140141c2637b89ad0d86c3b715459a1e7b92729 (patch) | |
tree | acfa1415168711e15013edd1b522f8c9f02030e0 /graphics/java | |
parent | 113eaa59c1dfafd548a13919e48c0346c0c925ac (diff) | |
download | frameworks_base-5140141c2637b89ad0d86c3b715459a1e7b92729.zip frameworks_base-5140141c2637b89ad0d86c3b715459a1e7b92729.tar.gz frameworks_base-5140141c2637b89ad0d86c3b715459a1e7b92729.tar.bz2 |
DrawableContainer was not respecting the value returned by Drawable.getPadding(Rect).
Before this change, DrawableContainer would always return true from getPadding(Rect)
even if all of its children were returning false from getPadding(Rect). This change
modifies this behavior to respect getPadding(Rect): mConstantPadding is kept null
when getPadding(Rect) returns false for all of the children and a flag is set
to avoid recomputing that value every time getConstantPadding() is invoked.
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/drawable/DrawableContainer.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 376b1df..dc80cf5 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -272,6 +272,8 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { boolean mCheckedConstantState; boolean mCanConstantState; + boolean mPaddingChecked = false; + DrawableContainerState(DrawableContainerState orig, DrawableContainer owner) { mOwner = owner; @@ -334,6 +336,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mHaveStateful = false; mConstantPadding = null; + mPaddingChecked = false; mComputedConstantSize = false; return pos; @@ -359,23 +362,25 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { if (mVariablePadding) { return null; } - if (mConstantPadding != null) { + if (mConstantPadding != null || mPaddingChecked) { return mConstantPadding; } - final Rect r = new Rect(0, 0, 0, 0); + Rect r = null; final Rect t = new Rect(); final int N = getChildCount(); final Drawable[] drawables = mDrawables; for (int i = 0; i < N; i++) { if (drawables[i].getPadding(t)) { + if (r == null) r = new Rect(0, 0, 0, 0); if (t.left > r.left) r.left = t.left; if (t.top > r.top) r.top = t.top; if (t.right > r.right) r.right = t.right; if (t.bottom > r.bottom) r.bottom = t.bottom; } } - return (mConstantPadding=r); + mPaddingChecked = true; + return (mConstantPadding = r); } public final void setConstantSize(boolean constant) { |