Loading java/src/com/android/inputmethod/latin/LatinIME.java +4 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading Loading @@ -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)); } } Loading java/src/com/android/inputmethod/latin/utils/StringUtils.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
java/src/com/android/inputmethod/latin/LatinIME.java +4 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading Loading @@ -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)); } } Loading
java/src/com/android/inputmethod/latin/utils/StringUtils.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading