aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-02-06 18:06:20 +0900
committerJean Chalard <jchalard@google.com>2012-02-06 18:41:00 +0900
commita7f2500001c53dc5a6de9c2525a75229cc7c6645 (patch)
tree8259adc429321b70aa500f609963c6468507e880 /java
parenta27cb623901d79be1007b0803898086a12ce731b (diff)
downloadlatinime-a7f2500001c53dc5a6de9c2525a75229cc7c6645.tar.gz
latinime-a7f2500001c53dc5a6de9c2525a75229cc7c6645.tar.xz
latinime-a7f2500001c53dc5a6de9c2525a75229cc7c6645.zip
Fix a bug with common objects.
Bug: 5961179 Change-Id: I452efc552c6ab390931f25557d7aee5a64bf054e
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/LastComposedWord.java2
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java7
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java11
3 files changed, 12 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/LastComposedWord.java b/java/src/com/android/inputmethod/latin/LastComposedWord.java
index 0c8c88f50..f34cb5ff9 100644
--- a/java/src/com/android/inputmethod/latin/LastComposedWord.java
+++ b/java/src/com/android/inputmethod/latin/LastComposedWord.java
@@ -51,6 +51,8 @@ public class LastComposedWord {
public static final LastComposedWord NOT_A_COMPOSED_WORD =
new LastComposedWord(null, null, null, "", "");
+ // Warning: this is using the passed objects as is and fully expects them to be
+ // immutable. Do not fiddle with their contents after you passed them to this constructor.
public LastComposedWord(final ArrayList<int[]> codes, final int[] xCoordinates,
final int[] yCoordinates, final String typedWord, final String autoCorrection) {
mCodes = codes;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 24007f95a..e4339318b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -2201,9 +2201,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// new composing text.
final int restartLength = mWordComposer.size();
if (DEBUG) {
- final String wordBeforeCursor =
- ic.getTextBeforeCursor(restartLength + 1, 0).subSequence(0, restartLength)
- .toString();
+ final String wordBeforeCursor = ic.getTextBeforeCursor(restartLength, 0).toString();
if (!TextUtils.equals(mWordComposer.getTypedWord(), wordBeforeCursor)) {
throw new RuntimeException("restartSuggestionsOnManuallyPickedTypedWord "
+ "check failed: we thought we were reverting \""
@@ -2212,8 +2210,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
+ wordBeforeCursor + "\"");
}
}
- // Warning: this +1 takes into account the extra space added by the manual pick process.
- ic.deleteSurroundingText(restartLength + 1, 0);
+ ic.deleteSurroundingText(restartLength, 0);
ic.setComposingText(mWordComposer.getTypedWord(), 1);
mHandler.cancelUpdateBigramPredictions();
mHandler.postUpdateSuggestions();
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index dd24432f7..f418968b5 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -310,13 +310,18 @@ public class WordComposer {
// LastComposedWord#didAutoCorrectToAnotherWord with #equals(). It would be marginally
// cleaner to do it here, but it would be slower (since we would #equals() for each commit,
// instead of only on cancel), and ultimately we want to figure it out even earlier anyway.
- final LastComposedWord lastComposedWord = new LastComposedWord(mCodes,
- mXCoordinates, mYCoordinates, mTypedWord.toString(),
+ final ArrayList<int[]> codes = mCodes;
+ final int[] xCoordinates = mXCoordinates;
+ final int[] yCoordinates = mYCoordinates;
+ mCodes = new ArrayList<int[]>(N);
+ mXCoordinates = new int[N];
+ mYCoordinates = new int[N];
+ final LastComposedWord lastComposedWord = new LastComposedWord(codes,
+ xCoordinates, yCoordinates, mTypedWord.toString(),
null == mAutoCorrection ? null : mAutoCorrection.toString());
if (type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD) {
lastComposedWord.deactivate();
}
- mCodes.clear();
mTypedWord.setLength(0);
mAutoCorrection = null;
return lastComposedWord;