diff --git a/dictionary/src/dictionary.cpp b/dictionary/src/dictionary.cpp index 02843abc2..8db5f12e7 100644 --- a/dictionary/src/dictionary.cpp +++ b/dictionary/src/dictionary.cpp @@ -147,16 +147,14 @@ Dictionary::addWord(unsigned short *word, int length, int frequency) } unsigned short -Dictionary::toLowerCase(unsigned short c, const int depth) { +Dictionary::toLowerCase(unsigned short c) { if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) { c = BASE_CHARS[c]; } - if (depth == 0) { - if (c >='A' && c <= 'Z') { - c |= 32; - } else if (c > 127) { - c = u_tolower(c); - } + if (c >='A' && c <= 'Z') { + c |= 32; + } else if (c > 127) { + c = u_tolower(c); } return c; } @@ -201,7 +199,7 @@ Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int s for (int i = 0; i < count; i++) { unsigned short c = getChar(&pos); - unsigned short lowerC = toLowerCase(c, depth); + unsigned short lowerC = toLowerCase(c); bool terminal = getTerminal(&pos); int childrenAddress = getAddress(&pos); int freq = 1; diff --git a/dictionary/src/dictionary.h b/dictionary/src/dictionary.h index 9173e39b0..8f195ca9a 100644 --- a/dictionary/src/dictionary.h +++ b/dictionary/src/dictionary.h @@ -49,7 +49,7 @@ private: bool sameAsTyped(unsigned short *word, int length); bool addWord(unsigned short *word, int length, int frequency); - unsigned short toLowerCase(unsigned short c, int depth); + unsigned short toLowerCase(unsigned short c); void getWordsRec(int pos, int depth, int maxDepth, bool completion, int frequency, int inputIndex, int diffs); bool isValidWordRec(int pos, unsigned short *word, int offset, int length); diff --git a/src/com/android/inputmethod/latin/ExpandableDictionary.java b/src/com/android/inputmethod/latin/ExpandableDictionary.java index 3f20783e4..c32796e57 100644 --- a/src/com/android/inputmethod/latin/ExpandableDictionary.java +++ b/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -250,7 +250,11 @@ public class ExpandableDictionary extends Dictionary { if (c < BASE_CHARS.length) { c = BASE_CHARS[c]; } - c = Character.toLowerCase(c); + if (c >= 'A' && c <= 'Z') { + c = (char) (c | 32); + } else { + c = Character.toLowerCase(c); + } return c; }