am 3a3bbf4a: am eed74b81: am c8383eda: Fix wrong commitText parameter in sendKeyCodePoint()

* commit '3a3bbf4a38870ecc42b7f6fbd3a7cae20fe020a7':
  Fix wrong commitText parameter in sendKeyCodePoint()
This commit is contained in:
Ken Wakasa 2013-10-14 10:52:40 -07:00 committed by Android Git Automerger
commit cf5dfd2464
2 changed files with 14 additions and 4 deletions

View file

@ -99,6 +99,7 @@ import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.LatinImeLoggerUtils; import com.android.inputmethod.latin.utils.LatinImeLoggerUtils;
import com.android.inputmethod.latin.utils.RecapitalizeStatus; import com.android.inputmethod.latin.utils.RecapitalizeStatus;
import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper; 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.TargetPackageInfoGetterTask;
import com.android.inputmethod.latin.utils.TextRange; import com.android.inputmethod.latin.utils.TextRange;
import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils; import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils;
@ -1587,8 +1588,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// relying on this behavior so we continue to support it for older apps. // relying on this behavior so we continue to support it for older apps.
sendDownUpKeyEvent(KeyEvent.KEYCODE_ENTER); sendDownUpKeyEvent(KeyEvent.KEYCODE_ENTER);
} else { } else {
final String text = new String(new int[] { code }, 0, 1); mConnection.commitText(StringUtils.newSingleCodePointString(code), 1);
mConnection.commitText(text, text.length());
} }
} }
@ -2336,11 +2336,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (mWordComposer.isComposingWord()) { // May have changed since we stored wasComposing if (mWordComposer.isComposingWord()) { // May have changed since we stored wasComposing
if (currentSettings.mCorrectionEnabled) { if (currentSettings.mCorrectionEnabled) {
final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR
: new String(new int[] { primaryCode }, 0, 1); : StringUtils.newSingleCodePointString(primaryCode);
commitCurrentAutoCorrection(separator); commitCurrentAutoCorrection(separator);
didAutoCorrect = true; didAutoCorrect = true;
} else { } else {
commitTyped(new String(new int[]{primaryCode}, 0, 1)); commitTyped(StringUtils.newSingleCodePointString(primaryCode));
} }
} }

View file

@ -48,6 +48,16 @@ public final class StringUtils {
return text.codePointCount(0, text.length()); 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) { public static boolean containsInArray(final String text, final String[] array) {
for (final String element : array) { for (final String element : array) {
if (text.equals(element)) return true; if (text.equals(element)) return true;