diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index f41355cc14f7e..24260d5c8bed9 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -451,11 +451,13 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD TaskStack stack = loadPlan.getTaskStack(); int numStackTasks = stack.getStackTaskCount(); + boolean showDeferredAnimation = numStackTasks > 0; EventBus.getDefault().send(new ConfigurationChangedEvent(true /* fromMultiWindow */, false /* fromDeviceOrientationChange */, false /* fromDisplayDensityChange */, numStackTasks > 0)); - EventBus.getDefault().send(new MultiWindowStateChangedEvent(isInMultiWindowMode, stack)); + EventBus.getDefault().send(new MultiWindowStateChangedEvent(isInMultiWindowMode, + showDeferredAnimation, stack)); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java b/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java index 11649fbbb6a68..64eeafa1ae17c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java +++ b/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java @@ -25,10 +25,14 @@ import com.android.systemui.recents.model.TaskStack; public class MultiWindowStateChangedEvent extends EventBus.AnimatedEvent { public final boolean inMultiWindow; + // This flag is only used when undocking a task + public final boolean showDeferredAnimation; public final TaskStack stack; - public MultiWindowStateChangedEvent(boolean inMultiWindow, TaskStack stack) { + public MultiWindowStateChangedEvent(boolean inMultiWindow, boolean showDeferredAnimation, + TaskStack stack) { this.inMultiWindow = inMultiWindow; + this.showDeferredAnimation = showDeferredAnimation; this.stack = stack; } } 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 a1584829e0db5..58ab30160cb3b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -1938,7 +1938,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal } public final void onBusEvent(final MultiWindowStateChangedEvent event) { - if (event.inMultiWindow) { + if (event.inMultiWindow || !event.showDeferredAnimation) { setTasks(event.stack, true /* allowNotifyStackChanges */); } else { // Reset the launch state before handling the multiwindow change