Merge "Change cursor drag threshold from 30 to 45 degrees from vertical" into rvc-dev am: f44a60bd69

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12052997

Change-Id: I76b9d12597161e729ee5dba6a51fff5302158c5e
This commit is contained in:
Nikita Dubrovsky
2020-07-08 16:46:20 +00:00
committed by Automerger Merge Worker
3 changed files with 7 additions and 10 deletions

View File

@@ -174,12 +174,9 @@ public class EditorTouchState {
int touchSlop = config.getScaledTouchSlop();
mMovedEnoughForDrag = distanceSquared > touchSlop * touchSlop;
if (mMovedEnoughForDrag) {
// If the direction of the swipe motion is within 30 degrees of vertical, it is
// considered a vertical drag. We don't actually have to compute the angle to
// implement the check though. When the angle is exactly 30 degrees from
// vertical, 2*deltaX = distance. When the angle is less than 30 degrees from
// vertical, 2*deltaX < distance.
mIsDragCloseToVertical = (4 * deltaXSquared) <= distanceSquared;
// If the direction of the swipe motion is within 45 degrees of vertical, it is
// considered a vertical drag.
mIsDragCloseToVertical = Math.abs(deltaX) <= Math.abs(deltaY);
}
}
} else if (action == MotionEvent.ACTION_CANCEL) {

View File

@@ -145,7 +145,7 @@ public class EditorCursorDragTest {
// Swipe along a diagonal path. This should drag the cursor. Because we snap the finger to
// the handle as the touch moves downwards (and because we have some slop to avoid jumping
// across lines), the cursor position will end up higher than the finger position.
onView(withId(R.id.textview)).perform(dragOnText(text.indexOf("line1"), text.indexOf("3")));
onView(withId(R.id.textview)).perform(dragOnText(text.indexOf("line1"), text.indexOf("2")));
onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("1")));
// Swipe right-down along a very steep diagonal path. This should not drag the cursor.
@@ -181,7 +181,7 @@ public class EditorCursorDragTest {
// Swipe along a diagonal path. This should drag the cursor. Because we snap the finger to
// the handle as the touch moves downwards (and because we have some slop to avoid jumping
// across lines), the cursor position will end up higher than the finger position.
onView(withId(R.id.textview)).perform(dragOnText(text.indexOf("line1"), text.indexOf("3")));
onView(withId(R.id.textview)).perform(dragOnText(text.indexOf("line1"), text.indexOf("2")));
onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("1")));
// Swipe right-down along a very steep diagonal path. This should not drag the cursor.

View File

@@ -326,9 +326,9 @@ public class EditorTouchStateTest {
mTouchState.update(event1, mConfig);
assertSingleTap(mTouchState, 0f, 0f, 0, 0);
// Simulate an ACTION_MOVE event that is > 30 deg from vertical.
// Simulate an ACTION_MOVE event that is > 45 deg from vertical.
long event2Time = 1002;
MotionEvent event2 = moveEvent(event1Time, event2Time, 100f, 173f);
MotionEvent event2 = moveEvent(event1Time, event2Time, 100f, 90f);
mTouchState.update(event2, mConfig);
assertDrag(mTouchState, 0f, 0f, 0, 0, false);