From a2267025b5a7355b785545f13b49e15f6cccdee7 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Thu, 16 Sep 2021 14:36:50 +0800 Subject: Use screen-based coordinates to calculate divier bar dragging velocity Fix: 199468325 Test: atest WMShellUnitTests Test: manual check the snapping behavior of divider bar. Change-Id: I1256dbe8cb6fbfefdfdaa15c884c2ade4029e256 --- .../Shell/src/com/android/wm/shell/common/split/DividerView.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java index f35c8e1c5929..f9ba97f8f9b1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java @@ -24,7 +24,6 @@ import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Property; -import android.util.TypedValue; import android.view.GestureDetector; import android.view.InsetsSource; import android.view.InsetsState; @@ -178,10 +177,12 @@ public class DividerView extends FrameLayout implements View.OnTouchListener { return true; } + // Convert to use screen-based coordinates to prevent lost track of motion events while + // moving divider bar and calculating dragging velocity. + event.setLocation(event.getRawX(), event.getRawY()); final int action = event.getAction() & MotionEvent.ACTION_MASK; final boolean isLandscape = isLandscape(); - // Using raw xy to prevent lost track of motion events while moving divider bar. - final int touchPos = isLandscape ? (int) event.getRawX() : (int) event.getRawY(); + final int touchPos = (int) (isLandscape ? event.getX() : event.getY()); switch (action) { case MotionEvent.ACTION_DOWN: mVelocityTracker = VelocityTracker.obtain(); -- cgit v1.2.3-59-g8ed1b