am b805da9b: Merge "Fix drawable container tinting" into lmp-dev
* commit 'b805da9b592e67cb777b78db3a96d47c60e31ca7': Fix drawable container tinting
This commit is contained in:
@@ -177,11 +177,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTintList(ColorStateList tint) {
|
public void setTintList(ColorStateList tint) {
|
||||||
mDrawableContainerState.mHasTint = tint != null
|
mDrawableContainerState.mHasTintList = true;
|
||||||
&& mDrawableContainerState.mTintMode != null;
|
|
||||||
|
|
||||||
if (mDrawableContainerState.mTint != tint) {
|
if (mDrawableContainerState.mTintList != tint) {
|
||||||
mDrawableContainerState.mTint = tint;
|
mDrawableContainerState.mTintList = tint;
|
||||||
|
|
||||||
if (mCurrDrawable != null) {
|
if (mCurrDrawable != null) {
|
||||||
mCurrDrawable.mutate().setTintList(tint);
|
mCurrDrawable.mutate().setTintList(tint);
|
||||||
@@ -191,8 +190,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTintMode(Mode tintMode) {
|
public void setTintMode(Mode tintMode) {
|
||||||
mDrawableContainerState.mHasTint = mDrawableContainerState.mTint != null
|
mDrawableContainerState.mHasTintMode = true;
|
||||||
&& tintMode != null;
|
|
||||||
|
|
||||||
if (mDrawableContainerState.mTintMode != tintMode) {
|
if (mDrawableContainerState.mTintMode != tintMode) {
|
||||||
mDrawableContainerState.mTintMode = tintMode;
|
mDrawableContainerState.mTintMode = tintMode;
|
||||||
@@ -449,10 +447,15 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
|||||||
d.setAlpha(mAlpha);
|
d.setAlpha(mAlpha);
|
||||||
}
|
}
|
||||||
if (mDrawableContainerState.mHasColorFilter) {
|
if (mDrawableContainerState.mHasColorFilter) {
|
||||||
|
// Color filter always overrides tint.
|
||||||
d.setColorFilter(mDrawableContainerState.mColorFilter);
|
d.setColorFilter(mDrawableContainerState.mColorFilter);
|
||||||
} else if (mDrawableContainerState.mHasTint) {
|
} else {
|
||||||
d.setTintList(mDrawableContainerState.mTint);
|
if (mDrawableContainerState.mHasTintList) {
|
||||||
d.setTintMode(mDrawableContainerState.mTintMode);
|
d.setTintList(mDrawableContainerState.mTintList);
|
||||||
|
}
|
||||||
|
if (mDrawableContainerState.mHasTintMode) {
|
||||||
|
d.setTintMode(mDrawableContainerState.mTintMode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
d.setVisible(isVisible(), true);
|
d.setVisible(isVisible(), true);
|
||||||
d.setDither(mDrawableContainerState.mDither);
|
d.setDither(mDrawableContainerState.mDither);
|
||||||
@@ -623,9 +626,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
|||||||
ColorFilter mColorFilter;
|
ColorFilter mColorFilter;
|
||||||
boolean mHasColorFilter;
|
boolean mHasColorFilter;
|
||||||
|
|
||||||
ColorStateList mTint;
|
ColorStateList mTintList;
|
||||||
Mode mTintMode;
|
Mode mTintMode;
|
||||||
boolean mHasTint;
|
boolean mHasTintList;
|
||||||
|
boolean mHasTintMode;
|
||||||
|
|
||||||
DrawableContainerState(DrawableContainerState orig, DrawableContainer owner,
|
DrawableContainerState(DrawableContainerState orig, DrawableContainer owner,
|
||||||
Resources res) {
|
Resources res) {
|
||||||
@@ -649,9 +653,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
|||||||
mAutoMirrored = orig.mAutoMirrored;
|
mAutoMirrored = orig.mAutoMirrored;
|
||||||
mColorFilter = orig.mColorFilter;
|
mColorFilter = orig.mColorFilter;
|
||||||
mHasColorFilter = orig.mHasColorFilter;
|
mHasColorFilter = orig.mHasColorFilter;
|
||||||
mTint = orig.mTint;
|
mTintList = orig.mTintList;
|
||||||
mTintMode = orig.mTintMode;
|
mTintMode = orig.mTintMode;
|
||||||
mHasTint = orig.mHasTint;
|
mHasTintList = orig.mHasTintList;
|
||||||
|
mHasTintMode = orig.mHasTintMode;
|
||||||
|
|
||||||
// Cloning the following values may require creating futures.
|
// Cloning the following values may require creating futures.
|
||||||
mConstantPadding = orig.getConstantPadding();
|
mConstantPadding = orig.getConstantPadding();
|
||||||
|
|||||||
Reference in New Issue
Block a user