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

Commit e1483fb1 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Fixing icon badging being done on scaled bitmap size

Launcher already scales the bitmap during the icon creaiton. The
badging should be done based on the actual size

Bug: 26345646
Change-Id: I1b1f7ac736322ba10db9083d602eec221b99687a
parent e70fb6f8
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -210,7 +210,7 @@ public final class Utilities {
        Bitmap bitmap = createIconBitmap(icon, context, scale);
        if (Utilities.ATLEAST_LOLLIPOP && user != null
                && !UserHandleCompat.myUserHandle().equals(user)) {
            BitmapDrawable drawable = new BitmapDrawable(context.getResources(), bitmap);
            BitmapDrawable drawable = new FixedSizeBitmapDrawable(bitmap);
            Drawable badged = context.getPackageManager().getUserBadgedIcon(
                    drawable, user.getUser());
            if (badged instanceof BitmapDrawable) {
@@ -805,4 +805,26 @@ public final class Utilities {
        PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        return ATLEAST_LOLLIPOP && powerManager.isPowerSaveMode();
    }

    /**
     * An extension of {@link BitmapDrawable} which returns the bitmap pixel size as intrinsic size.
     * This allows the badging to be done based on the action bitmap size rather than
     * the scaled bitmap size.
     */
    private static class FixedSizeBitmapDrawable extends BitmapDrawable {

        public FixedSizeBitmapDrawable(Bitmap bitmap) {
            super(null, bitmap);
        }

        @Override
        public int getIntrinsicHeight() {
            return getBitmap().getWidth();
        }

        @Override
        public int getIntrinsicWidth() {
            return getBitmap().getWidth();
        }
    }
}