Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 675a9f5f authored by Amin Shaikh's avatar Amin Shaikh
Browse files

Always copy and mutate icon drawables.

Fixes: 130759380
Test: visual
Change-Id: Icdf2175ce8958420f16084bd8dc7ac52e885c54f
parent 3d41214e
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import androidx.core.graphics.PathParser;

import com.android.customization.model.CustomizationManager;
import com.android.customization.model.CustomizationOption;
import com.android.customization.model.theme.custom.CustomTheme;
import com.android.customization.widget.DynamicAdaptiveIconDrawable;
import com.android.wallpaper.R;
import com.android.wallpaper.asset.Asset;
@@ -108,7 +107,7 @@ public class ThemeBundle implements CustomizationOption<ThemeBundle> {
                    mPreviewInfo.shapeDrawable);
        }
        if (!mPreviewInfo.icons.isEmpty()) {
            Drawable icon = mPreviewInfo.icons.get(0).mutate();
            Drawable icon = mPreviewInfo.icons.get(0).getConstantState().newDrawable().mutate();
            icon.setTint(res.getColor(R.color.icon_thumbnail_color, null));
            ((ImageView) view.findViewById(R.id.theme_option_icon)).setImageDrawable(
                    icon);
+9 −7
Original line number Diff line number Diff line
@@ -384,7 +384,8 @@ public class ThemeFragment extends ToolbarFragment {
            ViewGroup iconsContainer = card.findViewById(R.id.theme_preview_top_bar_icons);

            for (int i = 0; i < iconsContainer.getChildCount() && i < mIcons.size(); i++) {
                ((ImageView)iconsContainer.getChildAt(i)).setImageDrawable(mIcons.get(i));
                ((ImageView) iconsContainer.getChildAt(i))
                        .setImageDrawable(mIcons.get(i).getConstantState().newDrawable().mutate());
            }

            ViewGroup body = card.findViewById(R.id.theme_preview_card_body_container);
@@ -503,7 +504,7 @@ public class ThemeFragment extends ToolbarFragment {
                    }
                    for (int i = 0; i < 3 && i < previewInfo.icons.size(); i++) {
                        Drawable icon =
                                previewInfo.icons.get(i).getConstantState().newDrawable();
                                previewInfo.icons.get(i).getConstantState().newDrawable().mutate();
                        Drawable bgShape =
                                previewInfo.shapeDrawable.getConstantState().newDrawable();
                        bgShape.setTint(accentColor);
@@ -548,8 +549,9 @@ public class ThemeFragment extends ToolbarFragment {
                    @Override
                    protected void bindBody(boolean forceRebind) {
                        for (int i = 0; i < mIconIds.length && i < previewInfo.icons.size(); i++) {
                            ((ImageView) card.findViewById(mIconIds[i])).setImageDrawable(
                                    previewInfo.icons.get(i));
                            ((ImageView) card.findViewById(mIconIds[i]))
                                    .setImageDrawable(previewInfo.icons.get(i)
                                            .getConstantState().newDrawable().mutate());
                        }
                    }
                });
@@ -601,8 +603,8 @@ public class ThemeFragment extends ToolbarFragment {

                        for (int i = 0; i < mColorTileIds.length && i < previewInfo.icons.size();
                                i++) {
                            Drawable icon =
                                previewInfo.icons.get(i).getConstantState().newDrawable();
                            Drawable icon = previewInfo.icons.get(i)
                                    .getConstantState().newDrawable().mutate();
                            Drawable bgShape =
                                    previewInfo.shapeDrawable.getConstantState().newDrawable();
                            bgShape.setTint(accentColor);