diff options
author | 2014-03-25 22:47:05 +0900 | |
---|---|---|
committer | 2014-04-02 18:01:00 +0900 | |
commit | 3e160bbe6b91c2d50a410ebd28e10f3e58b2c73a (patch) | |
tree | a0f0ecd497d6cdc7c5d4220ddf7bbdeea0e0ad58 /java/src/com/android/inputmethod/latin/WordComposer.java | |
parent | dfaeb125eb27172e4d38e1e5a87a13a3320c1e82 (diff) | |
download | latinime-3e160bbe6b91c2d50a410ebd28e10f3e58b2c73a.tar.gz latinime-3e160bbe6b91c2d50a410ebd28e10f3e58b2c73a.tar.xz latinime-3e160bbe6b91c2d50a410ebd28e10f3e58b2c73a.zip |
[CB21] More refactoring
Bug: 13406701
Change-Id: I96e0a7fa2d9f4dfd8c355da4effc116bbd0f7f18
Diffstat (limited to 'java/src/com/android/inputmethod/latin/WordComposer.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/WordComposer.java | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index 3f9d57e42..87cf64461 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -189,11 +189,6 @@ public final class WordComposer { newIndex, primaryCode, mIsFirstCharCapitalized); if (Character.isUpperCase(primaryCode)) mCapsCount++; if (Character.isDigit(primaryCode)) mDigitsCount++; - if (Constants.CODE_SINGLE_QUOTE == primaryCode) { - ++mTrailingSingleQuotesCount; - } else { - mTrailingSingleQuotesCount = 0; - } } private void processEvent(final Event event) { @@ -209,6 +204,26 @@ public final class WordComposer { if (0 == mCodePointSize) { mIsFirstCharCapitalized = false; } + if (Constants.CODE_DELETE == event.mKeyCode) { + if (mTrailingSingleQuotesCount > 0) { + --mTrailingSingleQuotesCount; + } else { + // Delete, but we didn't end in a quote: must recompute mTrailingSingleQuotesCount + // We're only searching for single quotes, so no need to account for code points + for (int i = mTypedWordCache.length() - 1; i > 0; --i) { + if (Constants.CODE_SINGLE_QUOTE != mTypedWordCache.charAt(i)) { + break; + } + ++mTrailingSingleQuotesCount; + } + } + } else { + if (Constants.CODE_SINGLE_QUOTE == primaryCode) { + ++mTrailingSingleQuotesCount; + } else { + mTrailingSingleQuotesCount = 0; + } + } mAutoCorrection = null; } @@ -217,18 +232,6 @@ public final class WordComposer { */ public void deleteLast(final Event event) { processEvent(event); - if (mTrailingSingleQuotesCount > 0) { - --mTrailingSingleQuotesCount; - } else { - int i = mTypedWordCache.length(); - while (i > 0) { - i = Character.offsetByCodePoints(mTypedWordCache, i, -1); - if (Constants.CODE_SINGLE_QUOTE != Character.codePointAt(mTypedWordCache, i)) { - break; - } - ++mTrailingSingleQuotesCount; - } - } } public void setCursorPositionWithinWord(final int posWithinWord) { |