Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +1 −3 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.touch.ItemClickHandler.ItemClickProxy; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Executors; import com.android.launcher3.util.NavigationMode; Loading Loading @@ -939,9 +938,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (recents == null) { return; } ComponentKey componentToBeLaunched = new ComponentKey(info.getTargetComponent(), info.user); recents.getSplitSelectController().findLastActiveTaskAndRunCallback( componentToBeLaunched, info.getComponentKey(), foundTask -> { if (foundTask != null) { TaskView foundTaskView = Loading quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +2 −7 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import com.android.launcher3.Utilities; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.popup.SystemShortcut; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.util.GroupTask; Loading Loading @@ -205,11 +204,8 @@ public class TaskbarUIController { return; } ComponentKey componentToBeStaged = new ComponentKey( splitSelectSource.itemInfo.getTargetComponent(), splitSelectSource.itemInfo.user); recentsView.getSplitSelectController().findLastActiveTaskAndRunCallback( componentToBeStaged, splitSelectSource.itemInfo.getComponentKey(), foundTask -> { splitSelectSource.alreadyRunningTaskId = foundTask == null ? INVALID_TASK_ID Loading @@ -225,9 +221,8 @@ public class TaskbarUIController { */ public void triggerSecondAppForSplit(ItemInfoWithIcon info, Intent intent, View startingView) { RecentsView recents = getRecentsView(); ComponentKey secondAppComponent = new ComponentKey(info.getTargetComponent(), info.user); recents.getSplitSelectController().findLastActiveTaskAndRunCallback( secondAppComponent, info.getComponentKey(), foundTask -> { if (foundTask != null) { TaskView foundTaskView = recents.getTaskViewByTaskId(foundTask.key.id); Loading quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +1 −5 Original line number Diff line number Diff line Loading @@ -142,7 +142,6 @@ import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchControlle import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController; import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Executors; import com.android.launcher3.util.IntSet; Loading Loading @@ -601,13 +600,10 @@ public class QuickstepLauncher extends Launcher { @Override public void startSplitSelection(SplitSelectSource splitSelectSource) { RecentsView recentsView = getOverviewPanel(); ComponentKey componentToBeStaged = new ComponentKey( splitSelectSource.itemInfo.getTargetComponent(), splitSelectSource.itemInfo.user); // Check if there is already an instance of this app running, if so, initiate the split // using that. mSplitSelectStateController.findLastActiveTaskAndRunCallback( componentToBeStaged, splitSelectSource.itemInfo.getComponentKey(), foundTask -> { splitSelectSource.alreadyRunningTaskId = foundTask == null ? INVALID_TASK_ID Loading quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +8 −4 Original line number Diff line number Diff line Loading @@ -202,13 +202,17 @@ public class SplitSelectStateController { * Pulls the list of active Tasks from RecentsModel, and finds the most recently active Task * matching a given ComponentName. Then uses that Task (which could be null) with the given * callback. * * <p> * Used in various task-switching or splitscreen operations when we need to check if there is a * currently running Task of a certain type and use the most recent one. */ public void findLastActiveTaskAndRunCallback(ComponentKey componentKey, Consumer<Task> callback) { public void findLastActiveTaskAndRunCallback( @Nullable ComponentKey componentKey, Consumer<Task> callback) { mRecentTasksModel.getTasks(taskGroups -> { if (componentKey == null) { callback.accept(null); return; } Task lastActiveTask = null; // Loop through tasks in reverse, since they are ordered with most-recent tasks last. for (int i = taskGroups.size() - 1; i >= 0; i--) { Loading @@ -233,7 +237,7 @@ public class SplitSelectStateController { * Checks if a given Task is the most recently-active Task of type componentName. Used for * selecting already-running Tasks for splitscreen. */ public boolean isInstanceOfComponent(@Nullable Task task, ComponentKey componentKey) { public boolean isInstanceOfComponent(@Nullable Task task, @NonNull ComponentKey componentKey) { // Exclude the task that is already staged if (task == null || task.key.id == mInitialTaskId) { return false; Loading src/com/android/launcher3/model/data/ItemInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.launcher3.logger.LauncherAtom.TaskSwitcherContainer; import com.android.launcher3.logger.LauncherAtom.WallpapersContainer; import com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers; import com.android.launcher3.model.ModelWriter; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.ContentWriter; import com.android.launcher3.util.SettingsCache; Loading Loading @@ -211,6 +212,12 @@ public class ItemInfo { return Optional.ofNullable(getIntent()).map(Intent::getComponent).orElse(mComponentName); } @Nullable public final ComponentKey getComponentKey() { ComponentName targetComponent = getTargetComponent(); return targetComponent == null ? null : new ComponentKey(targetComponent, user); } /** * Returns this item's package name. * Loading Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +1 −3 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.touch.ItemClickHandler.ItemClickProxy; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Executors; import com.android.launcher3.util.NavigationMode; Loading Loading @@ -939,9 +938,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (recents == null) { return; } ComponentKey componentToBeLaunched = new ComponentKey(info.getTargetComponent(), info.user); recents.getSplitSelectController().findLastActiveTaskAndRunCallback( componentToBeLaunched, info.getComponentKey(), foundTask -> { if (foundTask != null) { TaskView foundTaskView = Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +2 −7 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import com.android.launcher3.Utilities; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.popup.SystemShortcut; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.util.GroupTask; Loading Loading @@ -205,11 +204,8 @@ public class TaskbarUIController { return; } ComponentKey componentToBeStaged = new ComponentKey( splitSelectSource.itemInfo.getTargetComponent(), splitSelectSource.itemInfo.user); recentsView.getSplitSelectController().findLastActiveTaskAndRunCallback( componentToBeStaged, splitSelectSource.itemInfo.getComponentKey(), foundTask -> { splitSelectSource.alreadyRunningTaskId = foundTask == null ? INVALID_TASK_ID Loading @@ -225,9 +221,8 @@ public class TaskbarUIController { */ public void triggerSecondAppForSplit(ItemInfoWithIcon info, Intent intent, View startingView) { RecentsView recents = getRecentsView(); ComponentKey secondAppComponent = new ComponentKey(info.getTargetComponent(), info.user); recents.getSplitSelectController().findLastActiveTaskAndRunCallback( secondAppComponent, info.getComponentKey(), foundTask -> { if (foundTask != null) { TaskView foundTaskView = recents.getTaskViewByTaskId(foundTask.key.id); Loading
quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +1 −5 Original line number Diff line number Diff line Loading @@ -142,7 +142,6 @@ import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchControlle import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController; import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Executors; import com.android.launcher3.util.IntSet; Loading Loading @@ -601,13 +600,10 @@ public class QuickstepLauncher extends Launcher { @Override public void startSplitSelection(SplitSelectSource splitSelectSource) { RecentsView recentsView = getOverviewPanel(); ComponentKey componentToBeStaged = new ComponentKey( splitSelectSource.itemInfo.getTargetComponent(), splitSelectSource.itemInfo.user); // Check if there is already an instance of this app running, if so, initiate the split // using that. mSplitSelectStateController.findLastActiveTaskAndRunCallback( componentToBeStaged, splitSelectSource.itemInfo.getComponentKey(), foundTask -> { splitSelectSource.alreadyRunningTaskId = foundTask == null ? INVALID_TASK_ID Loading
quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +8 −4 Original line number Diff line number Diff line Loading @@ -202,13 +202,17 @@ public class SplitSelectStateController { * Pulls the list of active Tasks from RecentsModel, and finds the most recently active Task * matching a given ComponentName. Then uses that Task (which could be null) with the given * callback. * * <p> * Used in various task-switching or splitscreen operations when we need to check if there is a * currently running Task of a certain type and use the most recent one. */ public void findLastActiveTaskAndRunCallback(ComponentKey componentKey, Consumer<Task> callback) { public void findLastActiveTaskAndRunCallback( @Nullable ComponentKey componentKey, Consumer<Task> callback) { mRecentTasksModel.getTasks(taskGroups -> { if (componentKey == null) { callback.accept(null); return; } Task lastActiveTask = null; // Loop through tasks in reverse, since they are ordered with most-recent tasks last. for (int i = taskGroups.size() - 1; i >= 0; i--) { Loading @@ -233,7 +237,7 @@ public class SplitSelectStateController { * Checks if a given Task is the most recently-active Task of type componentName. Used for * selecting already-running Tasks for splitscreen. */ public boolean isInstanceOfComponent(@Nullable Task task, ComponentKey componentKey) { public boolean isInstanceOfComponent(@Nullable Task task, @NonNull ComponentKey componentKey) { // Exclude the task that is already staged if (task == null || task.key.id == mInitialTaskId) { return false; Loading
src/com/android/launcher3/model/data/ItemInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.launcher3.logger.LauncherAtom.TaskSwitcherContainer; import com.android.launcher3.logger.LauncherAtom.WallpapersContainer; import com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers; import com.android.launcher3.model.ModelWriter; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.ContentWriter; import com.android.launcher3.util.SettingsCache; Loading Loading @@ -211,6 +212,12 @@ public class ItemInfo { return Optional.ofNullable(getIntent()).map(Intent::getComponent).orElse(mComponentName); } @Nullable public final ComponentKey getComponentKey() { ComponentName targetComponent = getTargetComponent(); return targetComponent == null ? null : new ComponentKey(targetComponent, user); } /** * Returns this item's package name. * Loading