diff options
3 files changed, 34 insertions, 20 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsResizeTaskDialog.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsResizeTaskDialog.java index 88270650ca1c..d3c65d271b62 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsResizeTaskDialog.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsResizeTaskDialog.java @@ -16,6 +16,9 @@ package com.android.systemui.recents; +import static android.app.ActivityManager.DOCKED_STACK_ID; +import static android.app.ActivityManager.FREEFORM_WORKSPACE_STACK_ID; + import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Dialog; @@ -245,7 +248,7 @@ public class RecentsResizeTaskDialog extends DialogFragment { // the focus ends on the selected one. for (int i = additionalTasks; i >= 0; --i) { if (mTasks[i] != null) { - mRecentsView.launchTask(mTasks[i], mBounds[i]); + mRecentsView.launchTask(mTasks[i], mBounds[i], FREEFORM_WORKSPACE_STACK_ID); } } } @@ -273,11 +276,11 @@ public class RecentsResizeTaskDialog extends DialogFragment { // Dismiss the dialog before trying to launch the task dismissAllowingStateLoss(); - if (mTasks[0].key.stackId != ActivityManager.DOCKED_STACK_ID) { + if (mTasks[0].key.stackId != DOCKED_STACK_ID) { int taskId = mTasks[0].key.id; mSsp.setTaskResizeable(taskId); mSsp.dockTask(taskId, createMode); - mRecentsView.launchTask(mTasks[0], null); + mRecentsView.launchTask(mTasks[0], null, DOCKED_STACK_ID); } else { Toast.makeText(getContext(), "Already docked", Toast.LENGTH_SHORT); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index 126612074a1b..a5fd3eb70fc4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -16,6 +16,8 @@ package com.android.systemui.recents.views; +import static android.app.ActivityManager.INVALID_STACK_ID; + import android.app.ActivityManager; import android.app.ActivityOptions; import android.content.Context; @@ -185,7 +187,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV TaskView tv = taskViews.get(j); Task task = tv.getTask(); if (tv.isFocusedTask()) { - onTaskViewClicked(mTaskStackView, tv, stack, task, false, false, null); + onTaskViewClicked(mTaskStackView, tv, stack, task, false, false, null, + INVALID_STACK_ID); return true; } } @@ -194,7 +197,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV } /** Launches a given task. */ - public boolean launchTask(Task task, Rect taskBounds) { + public boolean launchTask(Task task, Rect taskBounds, int destinationStack) { if (mTaskStackView != null) { TaskStack stack = mTaskStackView.getStack(); // Iterate the stack views and try and find the given task. @@ -204,7 +207,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV TaskView tv = taskViews.get(j); if (tv.getTask() == task) { onTaskViewClicked(mTaskStackView, tv, stack, task, false, taskBounds != null, - taskBounds); + taskBounds, destinationStack); return true; } } @@ -226,7 +229,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV if (tasks.get(j).isLaunchTarget) { Task task = tasks.get(j); TaskView tv = mTaskStackView.getChildViewForTask(task); - onTaskViewClicked(mTaskStackView, tv, stack, task, false, false, null); + onTaskViewClicked(mTaskStackView, tv, stack, task, false, false, null, + INVALID_STACK_ID); return true; } } @@ -451,12 +455,13 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV private void postDrawHeaderThumbnailTransitionRunnable(final TaskStackView view, final TaskView clickedView, final int offsetX, final int offsetY, final float stackScroll, - final ActivityOptions.OnAnimationStartedListener animStartedListener) { + final ActivityOptions.OnAnimationStartedListener animStartedListener, + final int destinationStack) { Runnable r = new Runnable() { @Override public void run() { overrideDrawHeaderThumbnailTransition(view, clickedView, offsetX, offsetY, - stackScroll, animStartedListener); + stackScroll, animStartedListener, destinationStack); } }; @@ -466,9 +471,10 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV private void overrideDrawHeaderThumbnailTransition(TaskStackView stackView, TaskView clickedTask, int offsetX, int offsetY, float stackScroll, - final ActivityOptions.OnAnimationStartedListener animStartedListener) { + final ActivityOptions.OnAnimationStartedListener animStartedListener, + int destinationStack) { List<AppTransitionAnimationSpec> specs = getAppTransitionAnimationSpecs(stackView, - clickedTask, offsetX, offsetY, stackScroll); + clickedTask, offsetX, offsetY, stackScroll, destinationStack); if (specs == null) { return; } @@ -499,8 +505,10 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV } private List<AppTransitionAnimationSpec> getAppTransitionAnimationSpecs(TaskStackView stackView, - TaskView clickedTask, int offsetX, int offsetY, float stackScroll) { - final int targetStackId = clickedTask.getTask().key.stackId; + TaskView clickedTask, int offsetX, int offsetY, float stackScroll, + int destinationStack) { + final int targetStackId = destinationStack != INVALID_STACK_ID ? + destinationStack : clickedTask.getTask().key.stackId; if (targetStackId != ActivityManager.FREEFORM_WORKSPACE_STACK_ID && targetStackId != ActivityManager.FULLSCREEN_WORKSPACE_STACK_ID) { return null; @@ -604,9 +612,8 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV @Override public void onTaskViewClicked(final TaskStackView stackView, final TaskView tv, - final TaskStack stack, final Task task, final boolean lockToTask, - final boolean boundsValid, final Rect bounds) { - + final TaskStack stack, final Task task, final boolean lockToTask, + final boolean boundsValid, final Rect bounds, int destinationStack) { // Notify any callbacks of the launching of a new task if (mCb != null) { mCb.onTaskViewClicked(); @@ -654,7 +661,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV }; } postDrawHeaderThumbnailTransitionRunnable(stackView, tv, offsetX, offsetY, stackScroll, - animStartedListener); + animStartedListener, destinationStack); opts = ActivityOptions.makeThumbnailAspectScaleUpAnimation(sourceView, Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8).createAshmemBitmap(), offsetX, offsetY, transform.rect.width(), transform.rect.height(), @@ -810,7 +817,7 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV SystemServicesProxy ssp = RecentsTaskLoader.getInstance().getSystemServicesProxy(); ssp.setTaskResizeable(event.task.key.id); ssp.dockTask(event.task.key.id, event.dockState.createMode); - launchTask(event.task, null); + launchTask(event.task, null, INVALID_STACK_ID); } } }); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index 08e4e202e19d..f63740715cb6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -16,7 +16,10 @@ package com.android.systemui.recents.views; +import static android.app.ActivityManager.INVALID_STACK_ID; + import android.animation.ValueAnimator; +import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.graphics.Canvas; @@ -59,7 +62,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal /** The TaskView callbacks */ interface TaskStackViewCallbacks { public void onTaskViewClicked(TaskStackView stackView, TaskView tv, TaskStack stack, Task t, - boolean lockToTask, boolean boundsValid, Rect bounds); + boolean lockToTask, boolean boundsValid, Rect bounds, int destinationStack); public void onAllTaskViewsDismissed(ArrayList<Task> removedTasks); public void onTaskStackFilterTriggered(); public void onTaskStackUnfilterTriggered(); @@ -1227,7 +1230,8 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal mUIDozeTrigger.stopDozing(); if (mCb != null) { - mCb.onTaskViewClicked(this, tv, mStack, task, lockToTask, false, null); + mCb.onTaskViewClicked(this, tv, mStack, task, lockToTask, false, null, + INVALID_STACK_ID); } } |