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

Commit bdda7251 authored by Jon Miranda's avatar Jon Miranda Committed by Jonathan Miranda
Browse files

Ensure the icon load request matches the ItemInfo for the floating view.

This fixes the bug where the wrong icon is present during the app close
animation.

Bug: 138195597
Change-Id: Ife2c6ad135dde54583f6f2bb2caf3b1e9325e064
Merged-In: Ib3767ec5c2b4eb22b35e5148879e11d2c1b28e3c
parent 01f8fb91
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -721,7 +721,7 @@ public class FloatingIconView extends View implements
     */
    @UiThread
    public static IconLoadResult fetchIcon(Launcher l, View v, ItemInfo info, boolean isOpening) {
        IconLoadResult result = new IconLoadResult();
        IconLoadResult result = new IconLoadResult(info);
        new Handler(LauncherModel.getWorkerLooper()).postAtFrontOfQueue(() -> {
            RectF position = new RectF();
            getLocationBoundsForView(l, v, isOpening, position);
@@ -750,11 +750,14 @@ public class FloatingIconView extends View implements

        // Get the drawable on the background thread
        boolean shouldLoadIcon = originalView.getTag() instanceof ItemInfo && hideOriginal;
        if (shouldLoadIcon) {
            if (sIconLoadResult != null && sIconLoadResult.itemInfo == originalView.getTag()) {
                view.mIconLoadResult = sIconLoadResult;
        if (shouldLoadIcon && view.mIconLoadResult == null) {
            } else {
                view.mIconLoadResult = fetchIcon(launcher, originalView,
                        (ItemInfo) originalView.getTag(), isOpening);
            }
        }
        sIconLoadResult = null;

        view.mIsVerticalBarLayout = launcher.getDeviceProfile().isVerticalBarLayout();
@@ -895,10 +898,15 @@ public class FloatingIconView extends View implements
    }

    private static class IconLoadResult {
        final ItemInfo itemInfo;
        Drawable drawable;
        Drawable badge;
        int iconOffset;
        Runnable onIconLoaded;
        boolean isIconLoaded;

        public IconLoadResult(ItemInfo itemInfo) {
            this.itemInfo = itemInfo;
        }
    }
}