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

Commit 41b2784d authored by Zhao Dong's avatar Zhao Dong Committed by Jay Aliomer
Browse files

Apply theme by using notification context

Apply theme by using notification context instead of
SystemUI context when loading notification icon drawable.

When loading notification icon for StatusBarIconView, use
notification's context as parameter, then applyTheme will
find theme resource in notification package and avoid
finding wrong theme resource in SystemUI for other apply's
drawable resources.

Bug: 158126029

Change-Id: Iaf8d8c6ff4af988233a1a331b255f6a4b44ca6cb
parent 7c8bda08
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -388,17 +388,21 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
    }

    private Drawable getIcon(StatusBarIcon icon) {
        return getIcon(getContext(), icon);
        Context notifContext = mNotification != null ?
                mNotification.getPackageContext(getContext()) : getContext();
        return getIcon(getContext(), notifContext, icon);
    }

    /**
     * Returns the right icon to use for this item
     *
     * @param context Context to use to get resources
     * @param sysuiContext Context to use to get scale factor
     * @param context Context to use to get resources of notification icon
     * @return Drawable for this item, or null if the package or item could not
     *         be found
     */
    public static Drawable getIcon(Context context, StatusBarIcon statusBarIcon) {
    public static Drawable getIcon(Context sysuiContext,
            Context context, StatusBarIcon statusBarIcon) {
        int userId = statusBarIcon.user.getIdentifier();
        if (userId == UserHandle.USER_ALL) {
            userId = UserHandle.USER_SYSTEM;
@@ -407,7 +411,8 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
        Drawable icon = statusBarIcon.icon.loadDrawableAsUser(context, userId);

        TypedValue typedValue = new TypedValue();
        context.getResources().getValue(R.dimen.status_bar_icon_scale_factor, typedValue, true);
        sysuiContext.getResources().getValue(R.dimen.status_bar_icon_scale_factor,
                typedValue, true);
        float scaleFactor = typedValue.getFloat();

        // No need to scale the icon, so return it as is.