fix: Conflict incoming changes from 15-dev
This commit is contained in:
@@ -23,6 +23,7 @@ import static com.android.launcher3.util.SplitConfigurationOptions.getLogEventFo
|
||||
import android.content.Intent;
|
||||
import android.content.pm.LauncherApps;
|
||||
import android.graphics.Point;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Pair;
|
||||
import android.util.SparseArray;
|
||||
import android.view.MotionEvent;
|
||||
@@ -30,6 +31,7 @@ import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.logging.InstanceId;
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
@@ -53,6 +55,7 @@ import com.android.launcher3.views.ActivityContext;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.quickstep.util.LogUtils;
|
||||
import com.android.quickstep.util.SingleTask;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
|
||||
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
|
||||
|
||||
@@ -142,25 +145,35 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
return null;
|
||||
}
|
||||
|
||||
ItemInfo itemInfo;
|
||||
ItemInfo itemInfo = null;
|
||||
if (icon.getTag() instanceof ItemInfo item && ShortcutUtil.supportsShortcuts(item)) {
|
||||
itemInfo = item;
|
||||
} else if (icon.getTag() instanceof SingleTask task) {
|
||||
itemInfo = SingleTask.Companion.createTaskItemInfo(task);
|
||||
} else {
|
||||
} else if (PinToTaskbarShortcut.Companion.isPinningAppWithContextMenuEnabled(mContext)
|
||||
&& icon.getTag() instanceof SingleTask task) {
|
||||
Task.TaskKey key = task.getTask().getKey();
|
||||
AppInfo appInfo = getApp(
|
||||
new ComponentKey(key.getComponent(), UserHandle.of(key.userId)));
|
||||
if (appInfo != null) {
|
||||
WorkspaceItemInfo wif = appInfo.makeWorkspaceItem(icon.getContext());
|
||||
itemInfo = SingleTask.Companion.createTaskItemInfo(task, wif);
|
||||
}
|
||||
}
|
||||
|
||||
if (itemInfo == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
PopupContainerWithArrow<BaseTaskbarContext> container;
|
||||
int deepShortcutCount = mPopupDataProvider.getShortcutCountForItem(itemInfo);
|
||||
// TODO(b/198438631): add support for INSTALL shortcut factory
|
||||
final ItemInfo finalInfo = itemInfo;
|
||||
List<SystemShortcut> systemShortcuts = getSystemShortcuts()
|
||||
.map(s -> s.getShortcut(context, itemInfo, icon))
|
||||
.map(s -> s.getShortcut(context, finalInfo, icon))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// TODO(b/375648361): Revisit to see if this can be implemented within getSystemShortcuts().
|
||||
if (Flags.enablePinningAppWithContextMenu()) {
|
||||
if (PinToTaskbarShortcut.Companion.isPinningAppWithContextMenuEnabled(mContext)) {
|
||||
SystemShortcut shortcut = createPinShortcut(context, itemInfo, icon);
|
||||
if (shortcut != null) {
|
||||
systemShortcuts.add(0, shortcut);
|
||||
@@ -168,7 +181,7 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
}
|
||||
|
||||
container = (PopupContainerWithArrow) context.getLayoutInflater().inflate(
|
||||
R.layout.popup_container, context.getDragLayer(), false);
|
||||
R.layout.popup_container, context.getDragLayer(), false);
|
||||
container.populateAndShowRows(icon, itemInfo, deepShortcutCount, systemShortcuts);
|
||||
|
||||
// TODO (b/198438631): configure for taskbar/context
|
||||
@@ -209,7 +222,8 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private SystemShortcut createPinShortcut(BaseTaskbarContext target, ItemInfo itemInfo,
|
||||
@VisibleForTesting
|
||||
SystemShortcut createPinShortcut(BaseTaskbarContext target, ItemInfo itemInfo,
|
||||
BubbleTextView originalView) {
|
||||
// Predicted items use {@code HotseatPredictionController.PinPrediction} shortcut to pin.
|
||||
if (itemInfo.isPredictedItem()) {
|
||||
@@ -219,6 +233,18 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
return new PinToTaskbarShortcut<>(target, itemInfo, originalView, false,
|
||||
mHotseatInfosList);
|
||||
}
|
||||
|
||||
if (itemInfo.container == CONTAINER_ALL_APPS) {
|
||||
// If the target ItemInfo is already pinned on taskbar. Show the unpin option instead.
|
||||
for (int i = 0; i < mHotseatInfosList.size(); i++) {
|
||||
if (Objects.equals(mHotseatInfosList.valueAt(i).getComponentKey(),
|
||||
itemInfo.getComponentKey())) {
|
||||
return new PinToTaskbarShortcut<>(target, itemInfo, originalView, false,
|
||||
mHotseatInfosList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mHotseatInfosList.size()
|
||||
< mContext.getTaskbarSpecsEvaluator().getNumShownHotseatIcons()) {
|
||||
return new PinToTaskbarShortcut<>(target, itemInfo, originalView, true,
|
||||
@@ -266,7 +292,10 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
// Move the icon to align with the center-top of the touch point
|
||||
Point iconShift = new Point();
|
||||
iconShift.x = mIconLastTouchPos.x - sv.getIconCenter().x;
|
||||
iconShift.y = mIconLastTouchPos.y - mContext.getDeviceProfile().taskbarIconSize;
|
||||
iconShift.y = mIconLastTouchPos.y
|
||||
- mContext.getDeviceProfile()
|
||||
.getTaskbarProfile()
|
||||
.getIconSize();
|
||||
|
||||
((TaskbarDragController) ActivityContext.lookupContext(
|
||||
v.getContext()).getDragController()).startDragOnLongClick(sv, iconShift);
|
||||
|
||||
Reference in New Issue
Block a user