Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1ad3b68 authored by Nikita Dubrovsky's avatar Nikita Dubrovsky
Browse files

Change cursor drag threshold from 30 to 45 degrees from vertical

Bug: 158948887
Test: Manual and unit tests
  atest FrameworksCoreTests:EditorTouchStateTest
  atest FrameworksCoreTests:EditorCursorDragTest
Change-Id: I6b30c0d6ef9c93fd4fd6aae3004cd6965e9d7be4
parent 831ac87a
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -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) {
+2 −2
Original line number Diff line number Diff line
@@ -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.
+2 −2
Original line number Diff line number Diff line
@@ -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);