From 26454141a8c489d84b7d486ad03869ff0f44dfdc Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Wed, 2 Dec 2015 15:04:57 -0800 Subject: [PATCH] Fix selection expansion detection logic. The logic to detect vertical expansion is inverted on RTL text. As a result, the selection handle cannot be moved when it's dragged toward vertically expanding and horizontally shrinking direction. Bug: 25893288 Change-Id: I096595d287261b1287862c6ad27ae7f6f0a73262 --- core/java/android/widget/Editor.java | 11 ++++-- .../res/layout/activity_text_view.xml | 4 +-- .../android/widget/TextViewActivityTest.java | 34 +++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 5146bc67c0605..6becd1e88112c 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -4223,10 +4223,15 @@ public class Editor { boolean isExpanding; final float xDiff = x - mPrevX; - if (atRtl == isStartHandle()) { - isExpanding = xDiff > 0 || currLine > mPreviousLineTouched; + if (isStartHandle()) { + isExpanding = currLine < mPreviousLineTouched; } else { - isExpanding = xDiff < 0 || currLine < mPreviousLineTouched; + isExpanding = currLine > mPreviousLineTouched; + } + if (atRtl == isStartHandle()) { + isExpanding |= xDiff > 0; + } else { + isExpanding |= xDiff < 0; } if (mTextView.getHorizontallyScrolling()) { diff --git a/core/tests/coretests/res/layout/activity_text_view.xml b/core/tests/coretests/res/layout/activity_text_view.xml index 7ab0b130c2939..e795c10003ee8 100644 --- a/core/tests/coretests/res/layout/activity_text_view.xml +++ b/core/tests/coretests/res/layout/activity_text_view.xml @@ -23,6 +23,6 @@ + android:layout_height="wrap_content" /> - \ No newline at end of file + diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java index 461450595b772..a6250e67a7f9e 100644 --- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java +++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java @@ -29,6 +29,7 @@ import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatin import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.pressKey; +import static android.support.test.espresso.action.ViewActions.replaceText; import static android.support.test.espresso.action.ViewActions.typeTextIntoFocusedView; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.RootMatchers.withDecorView; @@ -218,6 +219,39 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2