aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2013-10-13 16:27:08 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-13 16:27:08 -0700
commit3a3bbf4a38870ecc42b7f6fbd3a7cae20fe020a7 (patch)
tree7531a7e0a50c548b2d6d125ee037161b4b92792f /java/src
parent8a866d6fc13e518dfe054a007e585a740536e6e5 (diff)
parenteed74b81a6a8d7de11ae2411817546bdd886ae0a (diff)
downloadlatinime-3a3bbf4a38870ecc42b7f6fbd3a7cae20fe020a7.tar.gz
latinime-3a3bbf4a38870ecc42b7f6fbd3a7cae20fe020a7.tar.xz
latinime-3a3bbf4a38870ecc42b7f6fbd3a7cae20fe020a7.zip
am eed74b81: am c8383eda: Fix wrong commitText parameter in sendKeyCodePoint()
* commit 'eed74b81a6a8d7de11ae2411817546bdd886ae0a': Fix wrong commitText parameter in sendKeyCodePoint()
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java8
-rw-r--r--java/src/com/android/inputmethod/latin/utils/StringUtils.java10
2 files changed, 14 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dc96cd750..8654f3b63 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -99,6 +99,7 @@ import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.LatinImeLoggerUtils;
import com.android.inputmethod.latin.utils.RecapitalizeStatus;
import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
+import com.android.inputmethod.latin.utils.StringUtils;
import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
import com.android.inputmethod.latin.utils.TextRange;
import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils;
@@ -1586,8 +1587,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// relying on this behavior so we continue to support it for older apps.
sendDownUpKeyEvent(KeyEvent.KEYCODE_ENTER);
} else {
- final String text = new String(new int[] { code }, 0, 1);
- mConnection.commitText(text, text.length());
+ mConnection.commitText(StringUtils.newSingleCodePointString(code), 1);
}
}
@@ -2335,11 +2335,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (mWordComposer.isComposingWord()) { // May have changed since we stored wasComposing
if (currentSettings.mCorrectionEnabled) {
final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR
- : new String(new int[] { primaryCode }, 0, 1);
+ : StringUtils.newSingleCodePointString(primaryCode);
commitCurrentAutoCorrection(separator);
didAutoCorrect = true;
} else {
- commitTyped(new String(new int[]{primaryCode}, 0, 1));
+ commitTyped(StringUtils.newSingleCodePointString(primaryCode));
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index 121aecf0f..a36548392 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -48,6 +48,16 @@ public final class StringUtils {
return text.codePointCount(0, text.length());
}
+ public static String newSingleCodePointString(int codePoint) {
+ if (Character.charCount(codePoint) == 1) {
+ // Optimization: avoid creating an temporary array for characters that are
+ // represented by a single char value
+ return String.valueOf((char) codePoint);
+ }
+ // For surrogate pair
+ return new String(Character.toChars(codePoint));
+ }
+
public static boolean containsInArray(final String text, final String[] array) {
for (final String element : array) {
if (text.equals(element)) return true;