OSDN Git Service

Fix negative touch word offset that caused crashing when selecting text
authorMady Mellor <madym@google.com>
Thu, 12 Mar 2015 18:01:43 +0000 (11:01 -0700)
committerMady Mellor <madym@google.com>
Thu, 12 Mar 2015 19:24:26 +0000 (19:24 +0000)
Previously the offset between the touch event and the start / end of
the word could result in a negative value - we don't care or want
this value to be negative. The negative value also causes the returned
offset to be outside the bounds of the text which resulted in a crash.

Bug: 19705184
Change-Id: I4287df7778c246dd10654f1a1f1e57538e940730

core/java/android/widget/Editor.java

index 5d519ed..047432c 100644 (file)
@@ -3850,7 +3850,7 @@ public class Editor {
                     }
                 }
                 mPrevOffset = offset;
-                mTouchWordOffset = trueOffset - offset;
+                mTouchWordOffset = Math.max(trueOffset - offset, 0);
                 mInWord = !isStartBoundary(offset);
                 positionCursor = true;
             } else if (offset - mTouchWordOffset > mPrevOffset) {
@@ -3954,7 +3954,7 @@ public class Editor {
                     }
                 }
                 mPrevOffset = offset;
-                mTouchWordOffset = offset - trueOffset;
+                mTouchWordOffset = Math.max(offset - trueOffset, 0);
                 mInWord = !isEndBoundary(offset);
                 positionCursor = true;
             } else if (offset + mTouchWordOffset < mPrevOffset) {