Do not bring home stack to front when removing non-focused stack

Also, launch task in freeform stack if it's resizeable.

bug: 24671570
Change-Id: Icc4f342b954e5f80dde3609fb65412686f4f0f95
This commit is contained in:
Chong Zhang
2015-10-05 17:06:28 -07:00
parent 3e832afec3
commit a8be5e50c6
2 changed files with 10 additions and 5 deletions

View File

@@ -4545,7 +4545,8 @@ final class ActivityStack {
if (mTaskHistory.isEmpty()) {
if (DEBUG_STACK) Slog.i(TAG_STACK, "removeTask: removing stack=" + this);
if (isOnHomeDisplay()) {
// We only need to adjust focused stack if this stack is in focus.
if (isOnHomeDisplay() && mStackSupervisor.isFrontStack(this)) {
String myReason = reason + " leftTaskHistoryEmpty";
if (mFullscreen || !adjustFocusToNextVisibleStackLocked(null, myReason)) {
mStackSupervisor.moveHomeStackToFront(myReason);

View File

@@ -1799,10 +1799,14 @@ public final class ActivityStackSupervisor implements DisplayListener {
return container.mStack;
}
// The fullscreen stack is the only stack that can contain any task regardless of if
// the task is resizeable or not. So, we let the task go in the fullscreen task if it
// is the focus stack.
if (mFocusedStack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID
// The fullscreen stack can contain any task regardless of if the task is resizeable
// or not. So, we let the task go in the fullscreen task if it is the focus stack.
// If the freeform stack has focus, and the activity to be launched is resizeable,
// we can also put it in the focused stack.
final boolean canUseFocusedStack =
mFocusedStack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID
|| mFocusedStack.mStackId == FREEFORM_WORKSPACE_STACK_ID && r.info.resizeable;
if (canUseFocusedStack
&& (!newTask || mFocusedStack.mActivityContainer.isEligibleForNewTasks())) {
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS,
"computeStackFocus: Have a focused stack=" + mFocusedStack);