Fixing state not set properly when configuration changes

and remote animation callback comes after threshold is crossed

The transition length is updated when removeAnimations is received.
If the gesture delta is crossed before that, we were ending up in
long-swipe mode as due to an incomplete check.

Bug: 117549010
Change-Id: If5471c538ac51b84f176a1fad42112e84046da63
This commit is contained in:
Sunny Goyal 2018-10-15 15:28:03 -07:00
parent 2ccdd08ad1
commit ba7dba3983
1 changed files with 7 additions and 3 deletions

View File

@ -538,7 +538,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
public void updateDisplacement(float displacement) {
// We are moving in the negative x/y direction
displacement = -displacement;
if (displacement > mTransitionDragLength) {
if (displacement > mTransitionDragLength && mTransitionDragLength > 0) {
mCurrentShift.updateValue(1);
if (!mBgLongSwipeMode) {
@ -813,8 +813,12 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
long startMillis = SystemClock.uptimeMillis();
executeOnUiThread(() -> {
// Animate the launcher components at the same time as the window, always on UI thread.
if (mLauncherTransitionController != null && !mWasLauncherAlreadyVisible
&& start != end && duration > 0) {
if (mLauncherTransitionController == null) {
return;
}
if (start == end || duration <= 0) {
mLauncherTransitionController.getAnimationPlayer().end();
} else {
// Adjust start progress and duration in case we are on a different thread.
long elapsedMillis = SystemClock.uptimeMillis() - startMillis;
elapsedMillis = Utilities.boundToRange(elapsedMillis, 0, duration);