From 95ee8736dacd52c4e909815d3e524cf2f64657f9 Mon Sep 17 00:00:00 2001 From: Winson Date: Tue, 26 Apr 2016 14:46:58 -0700 Subject: [PATCH] Skip scroll-to animation when undocking and there are no tasks. Bug: 28367678 Change-Id: Iafd064196cae43f60ff6d356843d1e431d15daea --- .../src/com/android/systemui/recents/RecentsActivity.java | 4 +++- .../events/activity/MultiWindowStateChangedEvent.java | 6 +++++- .../com/android/systemui/recents/views/TaskStackView.java | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) 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