diff options
author | Alan Viverette <alanv@google.com> | 2014-09-30 14:55:36 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-30 14:55:36 +0000 |
commit | d11215b8bb618ef98dc12243f26fd3a863d947d6 (patch) | |
tree | 404bb5b13dd73c239d1f4c0c4ace2a3b1f7741fa /graphics | |
parent | 7768ecccf727633760b34ad3a3aacb3fb7d7798d (diff) | |
parent | b805da9b592e67cb777b78db3a96d47c60e31ca7 (diff) | |
download | frameworks_base-d11215b8bb618ef98dc12243f26fd3a863d947d6.zip frameworks_base-d11215b8bb618ef98dc12243f26fd3a863d947d6.tar.gz frameworks_base-d11215b8bb618ef98dc12243f26fd3a863d947d6.tar.bz2 |
am b805da9b: Merge "Fix drawable container tinting" into lmp-dev
* commit 'b805da9b592e67cb777b78db3a96d47c60e31ca7':
Fix drawable container tinting
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/graphics/drawable/DrawableContainer.java | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 0b052f4..4a719fe 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -177,11 +177,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { @Override public void setTintList(ColorStateList tint) { - mDrawableContainerState.mHasTint = tint != null - && mDrawableContainerState.mTintMode != null; + mDrawableContainerState.mHasTintList = true; - if (mDrawableContainerState.mTint != tint) { - mDrawableContainerState.mTint = tint; + if (mDrawableContainerState.mTintList != tint) { + mDrawableContainerState.mTintList = tint; if (mCurrDrawable != null) { mCurrDrawable.mutate().setTintList(tint); @@ -191,8 +190,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { @Override public void setTintMode(Mode tintMode) { - mDrawableContainerState.mHasTint = mDrawableContainerState.mTint != null - && tintMode != null; + mDrawableContainerState.mHasTintMode = true; if (mDrawableContainerState.mTintMode != tintMode) { mDrawableContainerState.mTintMode = tintMode; @@ -449,10 +447,15 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { d.setAlpha(mAlpha); } if (mDrawableContainerState.mHasColorFilter) { + // Color filter always overrides tint. d.setColorFilter(mDrawableContainerState.mColorFilter); - } else if (mDrawableContainerState.mHasTint) { - d.setTintList(mDrawableContainerState.mTint); - d.setTintMode(mDrawableContainerState.mTintMode); + } else { + if (mDrawableContainerState.mHasTintList) { + d.setTintList(mDrawableContainerState.mTintList); + } + if (mDrawableContainerState.mHasTintMode) { + d.setTintMode(mDrawableContainerState.mTintMode); + } } d.setVisible(isVisible(), true); d.setDither(mDrawableContainerState.mDither); @@ -623,9 +626,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { ColorFilter mColorFilter; boolean mHasColorFilter; - ColorStateList mTint; + ColorStateList mTintList; Mode mTintMode; - boolean mHasTint; + boolean mHasTintList; + boolean mHasTintMode; DrawableContainerState(DrawableContainerState orig, DrawableContainer owner, Resources res) { @@ -649,9 +653,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mAutoMirrored = orig.mAutoMirrored; mColorFilter = orig.mColorFilter; mHasColorFilter = orig.mHasColorFilter; - mTint = orig.mTint; + mTintList = orig.mTintList; mTintMode = orig.mTintMode; - mHasTint = orig.mHasTint; + mHasTintList = orig.mHasTintList; + mHasTintMode = orig.mHasTintMode; // Cloning the following values may require creating futures. mConstantPadding = orig.getConstantPadding(); |