summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
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);
}
}