summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMady Mellor <madym@google.com>2015-05-08 21:45:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-08 21:45:36 +0000
commitdb9629eec46a3259a9973c2d597fc0813028694c (patch)
treeb6199e8395480e08c2a1139d8dfd236f747afab7 /core
parent52dfc9d4fd0b518fd101819202a8dfb3ef469190 (diff)
parent50a927cdd14db7a99a7444ffb7c85f1882c9f43a (diff)
downloadframeworks_base-db9629eec46a3259a9973c2d597fc0813028694c.zip
frameworks_base-db9629eec46a3259a9973c2d597fc0813028694c.tar.gz
frameworks_base-db9629eec46a3259a9973c2d597fc0813028694c.tar.bz2
Merge "Fix: Hard to modify multi-line selection." into mnc-dev
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/Editor.java24
1 files changed, 14 insertions, 10 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 86a100f..78c418b 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -3974,16 +3974,16 @@ public class Editor {
}
}
mTouchWordOffset = Math.max(trueOffset - offset, 0);
- mInWord = !getWordIteratorWithText().isBoundary(offset);
positionCursor = true;
- } else if (offset - mTouchWordOffset > mPreviousOffset) {
+ } else if (offset - mTouchWordOffset > mPreviousOffset || currLine > mPrevLine) {
// User is shrinking the selection.
if (currLine > mPrevLine) {
// We're on a different line, so we'll snap to word boundaries.
- offset = end;
+ offset = start;
+ mTouchWordOffset = Math.max(trueOffset - offset, 0);
+ } else {
+ offset -= mTouchWordOffset;
}
- offset -= mTouchWordOffset;
- mInWord = !getWordIteratorWithText().isBoundary(offset);
positionCursor = true;
}
@@ -3999,7 +3999,9 @@ public class Editor {
} else {
offset = alteredOffset;
}
+ mTouchWordOffset = 0;
}
+ mInWord = !getWordIteratorWithText().isBoundary(offset);
positionAtCursorOffset(offset, false);
}
}
@@ -4072,17 +4074,17 @@ public class Editor {
}
}
mTouchWordOffset = Math.max(offset - trueOffset, 0);
- mInWord = !getWordIteratorWithText().isBoundary(offset);
positionCursor = true;
- } else if (offset + mTouchWordOffset < mPreviousOffset) {
+ } else if (offset + mTouchWordOffset < mPreviousOffset || currLine < mPrevLine) {
// User is shrinking the selection.
if (currLine < mPrevLine) {
// We're on a different line, so we'll snap to word boundaries.
- offset = start;
+ offset = end;
+ mTouchWordOffset = Math.max(offset - trueOffset, 0);
+ } else {
+ offset += mTouchWordOffset;
}
- offset += mTouchWordOffset;
positionCursor = true;
- mInWord = !getWordIteratorWithText().isBoundary(offset);
}
if (positionCursor) {
@@ -4097,7 +4099,9 @@ public class Editor {
} else {
offset = Math.min(alteredOffset, length);
}
+ mTouchWordOffset = 0;
}
+ mInWord = !getWordIteratorWithText().isBoundary(offset);
positionAtCursorOffset(offset, false);
}
}