summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Johannes Gallmann <gallmann@google.com> 2023-11-07 16:35:44 +0100
committer Johannes Gallmann <gallmann@google.com> 2023-11-08 12:34:36 +0100
commit9a9c0197d1a796933ceccda0be7c7487b0301cb6 (patch)
treee5e2416cbf0fd012710b2a1f6f87a5de556fabc6
parentd6afd39ee3f6e497e59fc79287a2b92c6ce2d8de (diff)
Handle right back swipe differently for cross task back
Bug: 259429314 Test: Manual, i.e. verifying cross task back animation on device Change-Id: Ic2913bd5988e98f7fedd8314bbb4a09c654307ed
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
index 8171d4af941f..80fc3a867d48 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
@@ -18,6 +18,7 @@ package com.android.wm.shell.back;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_OPENING;
+import static android.window.BackEvent.EDGE_RIGHT;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_CROSS_TASK;
import static com.android.wm.shell.back.BackAnimationConstants.UPDATE_SYSUI_FLAGS_THRESHOLD;
@@ -101,6 +102,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
private RemoteAnimationTarget mClosingTarget;
private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
private boolean mBackInProgress = false;
+ private boolean mIsRightEdge;
private final PointF mTouchPos = new PointF();
private IRemoteAnimationFinishedCallback mFinishCallback;
private final BackProgressAnimator mProgressAnimator = new BackProgressAnimator();
@@ -172,7 +174,12 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
// Move the window along the Y axis.
float scaledTop = (height - scaledHeight) * 0.5f + deltaY;
// Move the window along the X axis.
- float right = width - (progress * mVerticalMargin);
+ float right;
+ if (mIsRightEdge) {
+ right = (width - scaledWidth) * 0.5f + scaledWidth;
+ } else {
+ right = width - (progress * mVerticalMargin);
+ }
float left = right - scaledWidth;
mClosingCurrentRect.set(left, scaledTop, right, scaledTop + scaledHeight);
@@ -262,6 +269,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
private void onGestureProgress(@NonNull BackEvent backEvent) {
if (!mBackInProgress) {
+ mIsRightEdge = backEvent.getSwipeEdge() == EDGE_RIGHT;
mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY());
mBackInProgress = true;
}