diff options
3 files changed, 18 insertions, 4 deletions
diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java index 739eb04bd..d95567492 100644 --- a/src/com/android/launcher3/graphics/LauncherIcons.java +++ b/src/com/android/launcher3/graphics/LauncherIcons.java @@ -321,6 +321,19 @@ public class LauncherIcons { } public static Bitmap createShortcutIcon(ShortcutInfoCompat shortcutInfo, Context context, + final Bitmap fallbackIcon) { + Provider<Bitmap> fallbackIconProvider = new Provider<Bitmap>() { + @Override + public Bitmap get() { + // If the shortcut is pinned but no longer has an icon in the system, + // keep the current icon instead of reverting to the default icon. + return fallbackIcon; + } + }; + return createShortcutIcon(shortcutInfo, context, true, fallbackIconProvider); + } + + public static Bitmap createShortcutIcon(ShortcutInfoCompat shortcutInfo, Context context, boolean badged, @Nullable Provider<Bitmap> fallbackIconProvider) { LauncherAppState app = LauncherAppState.getInstance(context); Drawable unbadgedDrawable = DeepShortcutManager.getInstance(context) diff --git a/src/com/android/launcher3/model/ShortcutsChangedTask.java b/src/com/android/launcher3/model/ShortcutsChangedTask.java index 6f325858d..17cc238d4 100644 --- a/src/com/android/launcher3/model/ShortcutsChangedTask.java +++ b/src/com/android/launcher3/model/ShortcutsChangedTask.java @@ -85,10 +85,10 @@ public class ShortcutsChangedTask extends BaseModelUpdateTask { removedShortcutInfos.addAll(shortcutInfos); continue; } - for (ShortcutInfo shortcutInfo : shortcutInfos) { + for (final ShortcutInfo shortcutInfo : shortcutInfos) { shortcutInfo.updateFromDeepShortcutInfo(fullDetails, context); - shortcutInfo.iconBitmap = - LauncherIcons.createShortcutIcon(fullDetails, context); + shortcutInfo.iconBitmap = LauncherIcons.createShortcutIcon(fullDetails, context, + shortcutInfo.iconBitmap); updatedShortcutInfos.add(shortcutInfo); } } diff --git a/src/com/android/launcher3/model/UserLockStateChangedTask.java b/src/com/android/launcher3/model/UserLockStateChangedTask.java index 568200646..802771f04 100644 --- a/src/com/android/launcher3/model/UserLockStateChangedTask.java +++ b/src/com/android/launcher3/model/UserLockStateChangedTask.java @@ -85,7 +85,8 @@ public class UserLockStateChangedTask extends BaseModelUpdateTask { } si.isDisabled &= ~ShortcutInfo.FLAG_DISABLED_LOCKED_USER; si.updateFromDeepShortcutInfo(shortcut, context); - si.iconBitmap = LauncherIcons.createShortcutIcon(shortcut, context); + si.iconBitmap = LauncherIcons.createShortcutIcon(shortcut, context, + si.iconBitmap); } else { si.isDisabled |= ShortcutInfo.FLAG_DISABLED_LOCKED_USER; } |