Fix quick switch when swiping right on back button

Deferring the window tracking when touching down on the back button means that
we don't set isQuickSwitch before setting the state to FAST_OVERVIEW, making it
not scale up to be full screen. To fix this, we reapply the state when preparing
QuickScrubController for quick switch.

Change-Id: Ib3dcf300c45a00673ff9337f98d16d4e8cdf1ea0
This commit is contained in:
Tony Wickham 2018-11-12 17:19:36 -08:00
parent 9d9310ba72
commit bdc5f3d9e6
1 changed files with 15 additions and 7 deletions

View File

@ -29,7 +29,6 @@ import static com.android.quickstep.TouchConsumer.INTERACTION_QUICK_SCRUB;
import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA; import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_BACK; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_BACK;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_ROTATION; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_ROTATION;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorSet; import android.animation.AnimatorSet;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
@ -44,7 +43,8 @@ import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile; import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher; import com.android.launcher3.Launcher;
@ -77,9 +77,6 @@ import java.util.Objects;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import java.util.function.Consumer; import java.util.function.Consumer;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
/** /**
* Utility class which abstracts out the logical differences between Launcher and RecentsActivity. * Utility class which abstracts out the logical differences between Launcher and RecentsActivity.
*/ */
@ -156,10 +153,21 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
public void onQuickInteractionStart(Launcher activity, RunningTaskInfo taskInfo, public void onQuickInteractionStart(Launcher activity, RunningTaskInfo taskInfo,
boolean activityVisible, TouchInteractionLog touchInteractionLog) { boolean activityVisible, TouchInteractionLog touchInteractionLog) {
LauncherState fromState = activity.getStateManager().getState(); LauncherState fromState = activity.getStateManager().getState();
activity.getStateManager().goToState(FAST_OVERVIEW, activityVisible);
QuickScrubController controller = activity.<RecentsView>getOverviewPanel() QuickScrubController controller = activity.<RecentsView>getOverviewPanel()
.getQuickScrubController(); .getQuickScrubController();
boolean isQuickSwitch = controller.isQuickSwitch();
boolean animate = activityVisible;
if (isQuickSwitch && fromState == FAST_OVERVIEW && !animate) {
// We can already be in FAST_OVERVIEW if createActivityController() was called
// before us. This could happen, for instance, when launcher is slow to load when
// starting quick switch, causing us to call onQuickScrubStart() on the background
// thread. In this case, we also hadn't set isQuickSwitch = true before setting
// FAST_OVERVIEW, so we need to reapply FAST_OVERVIEW to take that into account.
activity.getStateManager().reapplyState();
} else {
activity.getStateManager().goToState(FAST_OVERVIEW, animate);
}
controller.onQuickScrubStart(activityVisible && !fromState.overviewUi, this, controller.onQuickScrubStart(activityVisible && !fromState.overviewUi, this,
touchInteractionLog); touchInteractionLog);