diff options
-rw-r--r-- | core/java/android/text/method/Touch.java | 12 | ||||
-rw-r--r-- | core/java/android/widget/TextView.java | 5 |
2 files changed, 12 insertions, 5 deletions
diff --git a/core/java/android/text/method/Touch.java b/core/java/android/text/method/Touch.java index 6995107..aa8d979 100644 --- a/core/java/android/text/method/Touch.java +++ b/core/java/android/text/method/Touch.java @@ -20,6 +20,7 @@ import android.text.Layout; import android.text.NoCopySpan; import android.text.Layout.Alignment; import android.text.Spannable; +import android.util.Log; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.widget.TextView; @@ -156,8 +157,17 @@ public class Touch { padding)); ny = Math.max(ny, 0); + int oldX = widget.getScrollX(); + int oldY = widget.getScrollY(); + scrollTo(widget, layout, nx, ny); - widget.cancelLongPress(); + + // If we actually scrolled, then cancel the up action. + if (oldX != widget.getScrollX() + || oldY != widget.getScrollY()) { + widget.cancelLongPress(); + } + return true; } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index f55ca3f..201cc0c 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -6529,6 +6529,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // Reset this state; it will be re-set if super.onTouchEvent // causes focus to move to the view. mTouchFocusSelected = false; + mScrolled = false; } final boolean superResult = super.onTouchEvent(event); @@ -6545,10 +6546,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if ((mMovement != null || onCheckIsTextEditor()) && mText instanceof Spannable && mLayout != null) { - if (action == MotionEvent.ACTION_DOWN) { - mScrolled = false; - } - boolean handled = false; int oldSelStart = Selection.getSelectionStart(mText); |