diff options
author | 2014-09-05 16:49:32 +0900 | |
---|---|---|
committer | 2014-09-08 15:33:51 +0900 | |
commit | b526a894db0f475596abbed56c4b311b5e4904dc (patch) | |
tree | 233ddc5005efa83ec0ac907e1747189bcfe5b270 /java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java | |
parent | 3f779718cc4793e30f2765d532e1d384577b405e (diff) | |
download | latinime-b526a894db0f475596abbed56c4b311b5e4904dc.tar.gz latinime-b526a894db0f475596abbed56c4b311b5e4904dc.tar.xz latinime-b526a894db0f475596abbed56c4b311b5e4904dc.zip |
Fix a bug with the Greek question mark.
Bug: 17398284
Change-Id: If49593e2c959935a183a4cd9d988407cc1160599
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java b/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java index 92bd02c54..02f1c5f00 100644 --- a/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java @@ -213,13 +213,22 @@ public final class CapsModeUtils { char c = cs.charAt(--j); // We found the next interesting chunk of text ; next we need to determine if it's the - // end of a sentence. If we have a question mark or an exclamation mark, it's the end of - // a sentence. If it's neither, the only remaining case is the period so we get the opposite - // case out of the way. - if (c == Constants.CODE_QUESTION_MARK || c == Constants.CODE_EXCLAMATION_MARK) { + // end of a sentence. If we have a sentence terminator (typically a question mark or an + // exclamation mark), then it's the end of a sentence; however, we treat the abbreviation + // marker specially because usually is the same char as the sentence separator (the + // period in most languages) and in this case we need to apply a heuristic to determine + // in which of these senses it's used. + if (spacingAndPunctuations.isSentenceTerminator(c) + && !spacingAndPunctuations.isAbbreviationMarker(c)) { return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS | TextUtils.CAP_MODE_SENTENCES) & reqModes; } + // If we reach here, we know we have whitespace before the cursor and before that there + // is something that either does not terminate the sentence, or a symbol preceded by the + // start of the text, or it's the sentence separator AND it happens to be the same code + // point as the abbreviation marker. + // If it's a symbol or something that does not terminate the sentence, then we need to + // return caps for MODE_CHARACTERS and MODE_WORDS, but not for MODE_SENTENCES. if (!spacingAndPunctuations.isSentenceSeparator(c) || j <= 0) { return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS) & reqModes; } |