Defer jumping to NORMAL state if overview is still peeking
Bug: 137316430
Change-Id: I1ace19bb229d07bd9dfe5ed6f60c63715b9f8cf2
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/FlingAndHoldTouchController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/FlingAndHoldTouchController.java
index 3fe4bcf..f06b8a9 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/FlingAndHoldTouchController.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/touchcontrollers/FlingAndHoldTouchController.java
@@ -168,6 +168,21 @@
}
@Override
+ protected void goToTargetState(LauncherState targetState, int logAction) {
+ if (mPeekAnim != null && mPeekAnim.isStarted()) {
+ // Don't jump to the target state until overview is no longer peeking.
+ mPeekAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ FlingAndHoldTouchController.super.goToTargetState(targetState, logAction);
+ }
+ });
+ } else {
+ super.goToTargetState(targetState, logAction);
+ }
+ }
+
+ @Override
protected void updateAnimatorBuilderOnReinit(AnimatorSetBuilder builder) {
if (handlingOverviewAnim()) {
// We don't want the state transition to all apps to animate overview,
diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
index 7252410..ae69f3b 100644
--- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
+++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
@@ -31,7 +31,6 @@
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.os.SystemClock;
-import android.util.Log;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
@@ -43,7 +42,6 @@
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.anim.AnimatorPlaybackController;
import com.android.launcher3.anim.AnimatorSetBuilder;
-import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
@@ -513,13 +511,17 @@
shouldGoToTargetState = !reachedTarget;
}
if (shouldGoToTargetState) {
- if (targetState != mStartState) {
- logReachedState(logAction, targetState);
- }
- mLauncher.getStateManager().goToState(targetState, false /* animated */);
+ goToTargetState(targetState, logAction);
}
}
+ protected void goToTargetState(LauncherState targetState, int logAction) {
+ if (targetState != mStartState) {
+ logReachedState(logAction, targetState);
+ }
+ mLauncher.getStateManager().goToState(targetState, false /* animated */);
+ }
+
private void logReachedState(int logAction, LauncherState targetState) {
// Transition complete. log the action
mLauncher.getUserEventDispatcher().logStateChangeAction(logAction,