Merge "Fix bug with rotating in the middle of split select staging animation" into tm-qpr-dev am: a49569a90e am: baa93c42cb am: a768b4547a
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/21551330 Change-Id: Iab0e7491176ead67ff1c8204b42bf2d3d3cb0dc8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -53,4 +53,9 @@ public class SplitScreenSelectState extends OverviewState {
|
|||||||
return SplitAnimationTimings.ABORT_DURATION;
|
return SplitAnimationTimings.ABORT_DURATION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldPreserveDataStateOnReapply() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4578,7 +4578,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** TODO(b/181707736) More gracefully handle exiting split selection state */
|
|
||||||
@SuppressLint("WrongCall")
|
@SuppressLint("WrongCall")
|
||||||
protected void resetFromSplitSelectionState() {
|
protected void resetFromSplitSelectionState() {
|
||||||
if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
|
if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
|
||||||
|
|||||||
@@ -70,4 +70,12 @@ public interface BaseState<T extends BaseState> {
|
|||||||
default boolean showTaskThumbnailSplash() {
|
default boolean showTaskThumbnailSplash() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For this state, whether member variables and other forms of data state should be preserved
|
||||||
|
* or wiped when the state is reapplied. (See {@link StateManager#reapplyState()})
|
||||||
|
*/
|
||||||
|
default boolean shouldPreserveDataStateOnReapply() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,6 +184,13 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
|
|||||||
public void reapplyState(boolean cancelCurrentAnimation) {
|
public void reapplyState(boolean cancelCurrentAnimation) {
|
||||||
boolean wasInAnimation = mConfig.currentAnimation != null;
|
boolean wasInAnimation = mConfig.currentAnimation != null;
|
||||||
if (cancelCurrentAnimation) {
|
if (cancelCurrentAnimation) {
|
||||||
|
// Animation canceling can trigger a cleanup routine, causing problems when we are in a
|
||||||
|
// launcher state that relies on member variable data. So if we are in one of those
|
||||||
|
// states, accelerate the current animation to its end point rather than canceling it
|
||||||
|
// outright.
|
||||||
|
if (mState.shouldPreserveDataStateOnReapply() && mConfig.currentAnimation != null) {
|
||||||
|
mConfig.currentAnimation.end();
|
||||||
|
}
|
||||||
mAtomicAnimationFactory.cancelAllStateElementAnimation();
|
mAtomicAnimationFactory.cancelAllStateElementAnimation();
|
||||||
cancelAnimation();
|
cancelAnimation();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user