diff options
author | Winson Chung <winsonc@google.com> | 2022-05-27 22:13:16 +0000 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2022-05-31 23:32:26 +0000 |
commit | 7ca87c785abfd252c64d58478dca2d4236bd4421 (patch) | |
tree | ff9d1d9bdbc7c83d682ed163943870437e59ade7 /quickstep | |
parent | 192b3c3118d6ad74fed6544c5bec5d2420cf1d6c (diff) | |
download | Launcher3-7ca87c785abfd252c64d58478dca2d4236bd4421.tar.gz |
Ignore pinned tasks for purposes of gesture nav
Bug: 234170890
Test: Enter content pip, swipe up and see if a duplicate stub taskview
is created
Change-Id: I62a994749fcaeff48901410ede26b848fa15b830
Diffstat (limited to 'quickstep')
-rw-r--r-- | quickstep/src/com/android/quickstep/TopTaskTracker.java | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/quickstep/src/com/android/quickstep/TopTaskTracker.java b/quickstep/src/com/android/quickstep/TopTaskTracker.java index 39c5f2ad98..723dc721a9 100644 --- a/quickstep/src/com/android/quickstep/TopTaskTracker.java +++ b/quickstep/src/com/android/quickstep/TopTaskTracker.java @@ -15,12 +15,13 @@ */ package com.android.quickstep; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.content.Intent.ACTION_CHOOSER; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT; -import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_ASSISTANT; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; @@ -64,6 +65,7 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta private final StagedSplitTaskPosition mMainStagePosition = new StagedSplitTaskPosition(); private final StagedSplitTaskPosition mSideStagePosition = new StagedSplitTaskPosition(); + private int mPinnedTaskId = INVALID_TASK_ID; private TopTaskTracker(Context context) { mMainStagePosition.stageType = SplitConfigurationOptions.STAGE_TYPE_MAIN; @@ -132,8 +134,18 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta } } + @Override + public void onActivityPinned(String packageName, int userId, int taskId, int stackId) { + mPinnedTaskId = taskId; + } + + @Override + public void onActivityUnpinned() { + mPinnedTaskId = INVALID_TASK_ID; + } + private void resetTaskId(StagedSplitTaskPosition taskPosition) { - taskPosition.taskId = -1; + taskPosition.taskId = INVALID_TASK_ID; } /** @@ -141,7 +153,8 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta * Will return empty array if device is not in staged split */ public int[] getRunningSplitTaskIds() { - if (mMainStagePosition.taskId == -1 || mSideStagePosition.taskId == -1) { + if (mMainStagePosition.taskId == INVALID_TASK_ID + || mSideStagePosition.taskId == INVALID_TASK_ID) { return new int[]{}; } int[] out = new int[2]; @@ -175,7 +188,11 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta false /* filterOnlyVisibleRecents */)); Collections.addAll(mOrderedTaskList, tasks); } - return new CachedTaskInfo(new ArrayList<>(mOrderedTaskList)); + + // Strip the pinned task + ArrayList<RunningTaskInfo> tasks = new ArrayList<>(mOrderedTaskList); + tasks.removeIf(t -> t.taskId == mPinnedTaskId); + return new CachedTaskInfo(tasks); } /** @@ -194,7 +211,7 @@ public class TopTaskTracker extends ISplitScreenListener.Stub implements TaskSta } public int getTaskId() { - return mTopTask == null ? -1 : mTopTask.taskId; + return mTopTask == null ? INVALID_TASK_ID : mTopTask.taskId; } /** |