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

Commit 414e50b0 authored by Steven Ng's avatar Steven Ng Committed by Automerger Merge Worker
Browse files

Fix class cast issue in AddItemActivity am: 671ffb88

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15299573

Change-Id: Ic1d75e6a1357a4ef43a6f3b92db578ed29c6ab08
parents 49e30257 671ffb88
Loading
Loading
Loading
Loading
+28 −9
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import androidx.annotation.Nullable;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.CheckLongPressHelper;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.icons.FastBitmapDrawable;
import com.android.launcher3.icons.RoundDrawableWrapper;
@@ -217,12 +218,7 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {

    private void applyPreviewOnAppWidgetHostView(WidgetItem item) {
        if (mRemoteViewsPreview != null) {
            mAppWidgetHostViewPreview = new NavigableAppWidgetHostView(getContext()) {
                @Override
                protected boolean shouldAllowDirectClick() {
                    return false;
                }
            };
            mAppWidgetHostViewPreview = createAppWidgetHostView(getContext());
            setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, item.widgetInfo,
                    mRemoteViewsPreview);
            return;
@@ -230,10 +226,15 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {

        if (!item.hasPreviewLayout()) return;

        mAppWidgetHostViewPreview = new LauncherAppWidgetHostView(getContext());
        Context context = getContext();
        // If the context is a Launcher activity, DragView will show mAppWidgetHostViewPreview as
        // a preview during drag & drop. And thus, we should use LauncherAppWidgetHostView, which
        // supports applying local color extraction during drag & drop.
        mAppWidgetHostViewPreview = isLauncherContext(context)
                ? new LauncherAppWidgetHostView(context)
                : createAppWidgetHostView(context);
        LauncherAppWidgetProviderInfo launcherAppWidgetProviderInfo =
                LauncherAppWidgetProviderInfo.fromProviderInfo(getContext(),
                        item.widgetInfo.clone());
                LauncherAppWidgetProviderInfo.fromProviderInfo(context, item.widgetInfo.clone());
        // A hack to force the initial layout to be the preview layout since there is no API for
        // rendering a preview layout for work profile apps yet. For non-work profile layout, a
        // proper solution is to use RemoteViews(PackageName, LayoutId).
@@ -400,6 +401,24 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
        return "";
    }

    private static NavigableAppWidgetHostView createAppWidgetHostView(Context context) {
        return new NavigableAppWidgetHostView(context) {
            @Override
            protected boolean shouldAllowDirectClick() {
                return false;
            }
        };
    }

    private static boolean isLauncherContext(Context context) {
        try {
            Launcher.getLauncher(context);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public CharSequence getAccessibilityClassName() {
        return WidgetCell.class.getName();