From 4b5b46bb66bf74ef5edd65c55e186b02f3c56e5d Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Thu, 26 Apr 2012 18:01:13 +0900 Subject: [PATCH] Don't autocorrect after suggestion resuming Bug: 6105732 Change-Id: I92e7a9c6d6eb648f747c3b396d7993479fd8478a --- .../src/com/android/inputmethod/latin/Suggest.java | 1 + .../android/inputmethod/latin/WordComposer.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 7cbee4f71..112bde6a3 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -385,6 +385,7 @@ public class Suggest implements Dictionary.WordCallback { } // Don't auto-correct words with multiple capital letter autoCorrectionAvailable &= !wordComposer.isMostlyCaps(); + autoCorrectionAvailable &= !wordComposer.isResumed(); if (allowsToBeAutoCorrected && suggestionsList.size() > 1 && mAutoCorrectionThreshold > 0 && Suggest.shouldBlockAutoCorrectionBySafetyNet(typedWord, suggestionsList.get(1).mWord)) { diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index bd8532ebd..e27a546c5 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -38,6 +38,7 @@ public class WordComposer { private int[] mYCoordinates; private StringBuilder mTypedWord; private CharSequence mAutoCorrection; + private boolean mIsResumed; // Cache these values for performance private int mCapsCount; @@ -57,6 +58,7 @@ public class WordComposer { mYCoordinates = new int[N]; mAutoCorrection = null; mTrailingSingleQuotesCount = 0; + mIsResumed = false; refreshSize(); } @@ -73,6 +75,7 @@ public class WordComposer { mIsFirstCharCapitalized = source.mIsFirstCharCapitalized; mAutoCapitalized = source.mAutoCapitalized; mTrailingSingleQuotesCount = source.mTrailingSingleQuotesCount; + mIsResumed = source.mIsResumed; refreshSize(); } @@ -85,6 +88,7 @@ public class WordComposer { mCapsCount = 0; mIsFirstCharCapitalized = false; mTrailingSingleQuotesCount = 0; + mIsResumed = false; refreshSize(); } @@ -193,6 +197,7 @@ public class WordComposer { int codePoint = Character.codePointAt(word, i); addKeyInfo(codePoint, keyboard); } + mIsResumed = true; } /** @@ -299,6 +304,13 @@ public class WordComposer { return mAutoCorrection; } + /** + * @return whether we started composing this word by resuming suggestion on an existing string + */ + public boolean isResumed() { + return mIsResumed; + } + // `type' should be one of the LastComposedWord.COMMIT_TYPE_* constants above. public LastComposedWord commitWord(final int type, final String committedWord, final int separatorCode) { @@ -320,6 +332,7 @@ public class WordComposer { mTypedWord.setLength(0); refreshSize(); mAutoCorrection = null; + mIsResumed = false; return lastComposedWord; } @@ -331,5 +344,6 @@ public class WordComposer { mTypedWord.append(lastComposedWord.mTypedWord); refreshSize(); mAutoCorrection = null; // This will be filled by the next call to updateSuggestion. + mIsResumed = true; } }