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

Commit c9965bce authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Launcher3: prevent duplicate icon during restore

parent 732da71e
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.launcher3.model;

import static com.android.launcher3.LauncherSettings.Favorites.DESKTOP_ICON_FLAG;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherActivityInfo;
@@ -266,10 +267,11 @@ public class AddWorkspaceItemsTask implements ModelUpdateTask {
            // Skip items with null intents
            return true;
        }
        if (intent.getComponent() != null) {
        ComponentName component = intent.getComponent();
        if (component != null) {
            // If component is not null, an intent with null package will produce
            // the same result and should also be a match.
            compPkgName = intent.getComponent().getPackageName();
            compPkgName = component.getPackageName();
            if (intent.getPackage() != null) {
                intentWithPkg = intent.toUri(0);
                intentWithoutPkg = new Intent(intent).setPackage(null).toUri(0);
@@ -283,7 +285,12 @@ public class AddWorkspaceItemsTask implements ModelUpdateTask {
            intentWithoutPkg = intent.toUri(0);
        }

        boolean isLauncherAppTarget = PackageManagerHelper.isLauncherAppTarget(intent);
        final boolean isLauncherAppTarget = PackageManagerHelper.isLauncherAppTarget(intent);
        final String targetPackage = compPkgName != null ? compPkgName : intent.getPackage();
        final boolean isPackageOnlyLauncherAppTarget = isLauncherAppTarget
                && targetPackage != null
                && (component == null || component.getClassName().isEmpty());

        synchronized (dataModel) {
            for (ItemInfo item : dataModel.itemsIdMap) {
                if (item instanceof WorkspaceItemInfo) {
@@ -296,6 +303,13 @@ public class AddWorkspaceItemsTask implements ModelUpdateTask {
                            return true;
                        }

                        // checking for existing app icon
                        if (isPackageOnlyLauncherAppTarget
                                && info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
                                && targetPackage.equals(info.getTargetPackage())) {
                            return true;
                        }

                        // checking for existing promise icon with same package name
                        if (isLauncherAppTarget
                                && info.isPromise()