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

Commit 8a739f95 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

Fix the issue deep shortcuts cannot be added to workspace via

voice/switch access

Bug: 140405990
Change-Id: Ie54d9c738fc51445f3aa49458ff4fc1dd6e4fc67
parent a9a1c459
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
package com.android.launcher3.accessibility;
package com.android.launcher3.accessibility;


import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK;

import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.NORMAL;


import android.app.AlertDialog;
import android.app.AlertDialog;
@@ -30,14 +32,14 @@ import com.android.launcher3.LauncherSettings;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.PendingAddItemInfo;
import com.android.launcher3.PendingAddItemInfo;
import com.android.launcher3.R;
import com.android.launcher3.R;
import com.android.launcher3.WorkspaceItemInfo;
import com.android.launcher3.Workspace;
import com.android.launcher3.Workspace;
import com.android.launcher3.WorkspaceItemInfo;
import com.android.launcher3.dragndrop.DragController.DragListener;
import com.android.launcher3.dragndrop.DragController.DragListener;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.keyboard.CustomActionsPopup;
import com.android.launcher3.notification.NotificationListener;
import com.android.launcher3.notification.NotificationListener;
import com.android.launcher3.popup.PopupContainerWithArrow;
import com.android.launcher3.popup.PopupContainerWithArrow;
import com.android.launcher3.shortcuts.DeepShortcutManager;
import com.android.launcher3.touch.ItemLongClickListener;
import com.android.launcher3.touch.ItemLongClickListener;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.ShortcutUtil;
import com.android.launcher3.util.ShortcutUtil;
@@ -164,6 +166,13 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme
    }
    }


    public boolean performAction(final View host, final ItemInfo item, int action) {
    public boolean performAction(final View host, final ItemInfo item, int action) {
        if (action == ACTION_LONG_CLICK && ShortcutUtil.isDeepShortcut(item)) {
            CustomActionsPopup popup = new CustomActionsPopup(mLauncher, host);
            if (popup.canShow()) {
                popup.show();
                return true;
            }
        }
        if (action == MOVE) {
        if (action == MOVE) {
            beginAccessibleDrag(host, item);
            beginAccessibleDrag(host, item);
        } else if (action == ADD_TO_WORKSPACE) {
        } else if (action == ADD_TO_WORKSPACE) {
+53 −33
Original line number Original line Diff line number Diff line
@@ -23,22 +23,42 @@ import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.shortcuts.ShortcutKey;
import com.android.launcher3.shortcuts.ShortcutKey;


public class ShortcutUtil {
public class ShortcutUtil {
    /**
     * Returns true when we should show shortcut menu for the item.
     */
    public static boolean supportsShortcuts(ItemInfo info) {
    public static boolean supportsShortcuts(ItemInfo info) {
        return isActive(info) && (isApp(info) || isPinnedShortcut(info));
        return isActive(info) && (isApp(info) || isPinnedShortcut(info));
    }
    }


    /**
     * Returns true when we should show depp shortcuts in shortcut menu for the item.
     */
    public static boolean supportsDeepShortcuts(ItemInfo info) {
    public static boolean supportsDeepShortcuts(ItemInfo info) {
        return isActive(info) && isApp(info);
        return isActive(info) && isApp(info);
    }
    }


    /**
     * Returns the shortcut id if the item is a pinned shortcut.
     */
    public static String getShortcutIdIfPinnedShortcut(ItemInfo info) {
    public static String getShortcutIdIfPinnedShortcut(ItemInfo info) {
    return isActive(info) && isPinnedShortcut(info) ?
        return isActive(info) && isPinnedShortcut(info)
        ShortcutKey.fromItemInfo(info).getId() : null;
                ? ShortcutKey.fromItemInfo(info).getId() : null;
    }
    }


    /**
     * Returns the person keys associated with the item. (Has no function right now.)
     */
    public static String[] getPersonKeysIfPinnedShortcut(ItemInfo info) {
    public static String[] getPersonKeysIfPinnedShortcut(ItemInfo info) {
    return isActive(info) && isPinnedShortcut(info) ?
        return isActive(info) && isPinnedShortcut(info)
        ((WorkspaceItemInfo) info).getPersonKeys() : Utilities.EMPTY_STRING_ARRAY;
                ? ((WorkspaceItemInfo) info).getPersonKeys() : Utilities.EMPTY_STRING_ARRAY;
    }

    /**
     * Returns true if the item is a deep shortcut.
     */
    public static boolean isDeepShortcut(ItemInfo info) {
        return info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
                && info instanceof WorkspaceItemInfo;
    }
    }


    private static boolean isActive(ItemInfo info) {
    private static boolean isActive(ItemInfo info) {