diff options
author | Mady Mellor <madym@google.com> | 2015-05-08 21:45:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-08 21:45:36 +0000 |
commit | db9629eec46a3259a9973c2d597fc0813028694c (patch) | |
tree | b6199e8395480e08c2a1139d8dfd236f747afab7 /core | |
parent | 52dfc9d4fd0b518fd101819202a8dfb3ef469190 (diff) | |
parent | 50a927cdd14db7a99a7444ffb7c85f1882c9f43a (diff) | |
download | frameworks_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.java | 24 |
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); } } |