Defer intercepting touch events to actually start shifting tasks

Fix: 278740578
Test: http://recall/-/fLARJNt42LVxc3tt86SneW/d9A443iE2UQVktVc2YqwT2
Change-Id: I81efc87f19775dba96bab581a1c443d6070f6ebc
This commit is contained in:
Jerry Chang
2023-04-20 07:43:04 +00:00
committed by Winson Chung
parent d7c2ad50ad
commit 2792271688
@@ -334,6 +334,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
private boolean mCanSlowSwipeGoHome = true;
// Indicates whether the divider is shown, only used when split screen is activated.
private boolean mIsDividerShown = true;
private boolean mStartMovingTasks;
@Nullable
private RemoteAnimationTargets.ReleaseCheck mSwipePipToHomeReleaseCheck = null;
@@ -1722,12 +1723,19 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
return keepClearArea;
}
/**
* Notifies to start intercepting touches in the app window and hide the divider bar if needed.
* @see RecentsAnimationController#enableInputConsumer()
*/
private void startInterceptingTouchesForGesture() {
if (mRecentsAnimationController == null) {
if (mRecentsAnimationController == null || !mStartMovingTasks) {
return;
}
mRecentsAnimationController.enableInputConsumer();
// Hide the divider as it starts intercepting touches in the app window.
setDividerShown(false);
}
private void computeRecentsScrollIfInvisible() {
@@ -2339,9 +2347,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
boolean setRecentsScroll = mRecentsViewScrollLinked && mRecentsView != null;
float progress = Math.max(mCurrentShift.value, getScaleProgressDueToScroll());
int scrollOffset = setRecentsScroll ? mRecentsView.getScrollOffset() : 0;
if (progress > 0 || scrollOffset != 0) {
// Hide the divider as the tasks start moving.
setDividerShown(false);
if (!mStartMovingTasks && (progress > 0 || scrollOffset != 0)) {
mStartMovingTasks = true;
startInterceptingTouchesForGesture();
}
for (RemoteTargetHandle remoteHandle : mRemoteTargetHandles) {
AnimatorControllerWithResistance playbackController =