diff options
author | 2014-02-06 14:39:10 +0900 | |
---|---|---|
committer | 2014-02-06 16:30:12 +0900 | |
commit | 4a64ad9538ed3cfb1c60e2c6ede7368c6d691973 (patch) | |
tree | 5a353482fcdc499163fa255b09f2af2e6cc0eeba /java/src | |
parent | 2212385061df31b44c24078eb137aef4253909b3 (diff) | |
download | latinime-4a64ad9538ed3cfb1c60e2c6ede7368c6d691973.tar.gz latinime-4a64ad9538ed3cfb1c60e2c6ede7368c6d691973.tar.xz latinime-4a64ad9538ed3cfb1c60e2c6ede7368c6d691973.zip |
Decimal number is treated as outputText
Change-Id: I9d4a8ac5dd26a7c41fcfbe1842a40f347a2f2aab
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 2925a4b76..8ce820cf3 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -57,8 +57,15 @@ public final class KeySpecParser { } private static boolean hasCode(final String keySpec, final int labelEnd) { - if (labelEnd > 0 && labelEnd + 1 < keySpec.length() - && keySpec.startsWith(KeyboardCodesSet.PREFIX_CODE, labelEnd + 1)) { + if (labelEnd <= 0 || labelEnd + 1 >= keySpec.length()) { + return false; + } + if (keySpec.startsWith(KeyboardCodesSet.PREFIX_CODE, labelEnd + 1)) { + return true; + } + // This is a workaround to have a key that has a supplementary code point. We can't put a + // string in resource as a XML entity of a supplementary code point or a surrogate pair. + if (keySpec.startsWith(PREFIX_HEX, labelEnd + 1)) { return true; } return false; @@ -203,19 +210,20 @@ public final class KeySpecParser { return (StringUtils.codePointCount(label) == 1) ? label.codePointAt(0) : CODE_OUTPUT_TEXT; } - // TODO: Make this method private once Key.code attribute is removed. public static int parseCode(final String text, final KeyboardCodesSet codesSet, - final int defCode) { + final int defaultCode) { if (text == null) { - return defCode; + return defaultCode; } if (text.startsWith(KeyboardCodesSet.PREFIX_CODE)) { return codesSet.getCode(text.substring(KeyboardCodesSet.PREFIX_CODE.length())); } + // This is a workaround to have a key that has a supplementary code point. We can't put a + // string in resource as a XML entity of a supplementary code point or a surrogate pair. if (text.startsWith(PREFIX_HEX)) { return Integer.parseInt(text.substring(PREFIX_HEX.length()), 16); } - return Integer.parseInt(text); + return defaultCode; } public static int getIconId(final String keySpec) { |