diff options
| author | 2024-01-23 10:30:59 -0800 | |
|---|---|---|
| committer | 2024-01-23 14:52:09 -0800 | |
| commit | 71b6215e6e4b2703eccfc1e693dab5c678bec302 (patch) | |
| tree | 4e141675404c6f9efa594657a1dd28b25bb3ed25 | |
| parent | 97d24320c1a1e701da531f90773e69e062c12e5e (diff) | |
Perform double tap toggle on ACTION_UP.
Currently, the double tap event is processed on the initial ACTION_DOWN
of the second tap. This conflicts with potential drag reposition events
that may follow, causing the size change to be reverted when the drag
ends.
This CL has the double tap resize occur on ACTION_UP instead, and only
if there isn't a drag event being handled.
Bug: 301322788
Test: Manual
Change-Id: I78b446a17f74040a2c1f6a9ebb21f137163b40b7
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 554b1fb99550..4ba05ce8aef1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -32,6 +32,7 @@ import static com.android.wm.shell.windowdecor.MoveToDesktopAnimator.DRAG_FREEFO import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; +import android.annotation.NonNull; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityTaskManager; @@ -60,7 +61,6 @@ import android.view.ViewConfiguration; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; @@ -544,12 +544,22 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { return true; } + /** + * Perform a task size toggle on release of the double-tap, assuming no drag event + * was handled during the double-tap. + * @param e The motion event that occurred during the double-tap gesture. + * @return true if the event should be consumed, false if not + */ @Override - public boolean onDoubleTap(@NonNull MotionEvent e) { + public boolean onDoubleTapEvent(@NonNull MotionEvent e) { + final int action = e.getActionMasked(); + if (mIsDragging || (action != MotionEvent.ACTION_UP + && action != MotionEvent.ACTION_CANCEL)) { + return false; + } final RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); - mDesktopTasksController.ifPresent(c -> { - c.toggleDesktopTaskSize(taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId)); - }); + mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize(taskInfo, + mWindowDecorByTaskId.get(taskInfo.taskId))); return true; } } |