aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-02-07 09:26:04 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-02-07 09:26:04 +0000
commita9e1db6636c69a9bf3c1a7bd6753781dd68bff0f (patch)
tree3f7a517376b5dafc1b12135b749af0012143e7dc /java/src
parent276b1a2ebc6d5ea3fa36fa9271cdc6310db34021 (diff)
parent4a64ad9538ed3cfb1c60e2c6ede7368c6d691973 (diff)
downloadlatinime-a9e1db6636c69a9bf3c1a7bd6753781dd68bff0f.tar.gz
latinime-a9e1db6636c69a9bf3c1a7bd6753781dd68bff0f.tar.xz
latinime-a9e1db6636c69a9bf3c1a7bd6753781dd68bff0f.zip
Merge "Decimal number is treated as outputText"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java20
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) {