mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-03 17:36:49 +00:00
Merge "Fix bug with rotating in the middle of split select staging animation" into tm-qpr-dev am: a49569a90e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/21551330 Change-Id: I321507bda3f22ad4aa228a9a15235e576cdf703a 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;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldPreserveDataStateOnReapply() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4578,7 +4578,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
return true;
|
||||
}
|
||||
|
||||
/** TODO(b/181707736) More gracefully handle exiting split selection state */
|
||||
@SuppressLint("WrongCall")
|
||||
protected void resetFromSplitSelectionState() {
|
||||
if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
|
||||
|
||||
@@ -70,4 +70,12 @@ public interface BaseState<T extends BaseState> {
|
||||
default boolean showTaskThumbnailSplash() {
|
||||
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) {
|
||||
boolean wasInAnimation = mConfig.currentAnimation != null;
|
||||
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();
|
||||
cancelAnimation();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user