aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-10-04 06:00:45 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-04 06:00:45 -0700
commitdaff19bc29b11c95022b0250816bcafe8ad4d26c (patch)
tree94ec60fd03cbf5fe0f1db1ca72c4c805a4a42e4d
parent3b7802f8d0166796a63fb437113ac2927936cd13 (diff)
parentd173ed18e44ea5cdc48d5f620bb91efcd3ed5174 (diff)
downloadlatinime-daff19bc29b11c95022b0250816bcafe8ad4d26c.tar.gz
latinime-daff19bc29b11c95022b0250816bcafe8ad4d26c.tar.xz
latinime-daff19bc29b11c95022b0250816bcafe8ad4d26c.zip
am d173ed18: am bf6c8bd8: am 3f7fe829: Merge "Always consider a new line the start of a sentence" into jb-mr1-dev
* commit 'd173ed18e44ea5cdc48d5f620bb91efcd3ed5174': Always consider a new line the start of a sentence
-rw-r--r--java/src/com/android/inputmethod/latin/StringUtils.java14
-rw-r--r--tests/src/com/android/inputmethod/latin/StringUtilsTests.java8
2 files changed, 17 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/latin/StringUtils.java b/java/src/com/android/inputmethod/latin/StringUtils.java
index 7b65b7343..df7709892 100644
--- a/java/src/com/android/inputmethod/latin/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/StringUtils.java
@@ -250,15 +250,19 @@ public final class StringUtils {
// Step 3 : Search for the start of a paragraph. From the starting point computed in step 2,
// we go back over any space or tab char sitting there. We find the start of a paragraph
- // if the first char that's not a space or tab is a start of line (as in, either \n or
- // start of text).
+ // if the first char that's not a space or tab is a start of line (as in \n, start of text,
+ // or some other similar characters).
int j = i;
+ char prevChar = Keyboard.CODE_SPACE;
if (hasSpaceBefore) --j;
- while (j > 0 && Character.isWhitespace(cs.charAt(j - 1))) {
+ while (j > 0) {
+ prevChar = cs.charAt(j - 1);
+ if (!Character.isSpaceChar(prevChar) && prevChar != Keyboard.CODE_TAB) break;
j--;
}
- if (j == 0) {
- // There is only whitespace between the start of the text and the cursor. Both
+ if (j <= 0 || Character.isWhitespace(prevChar)) {
+ // There are only spacing chars between the start of the paragraph and the cursor,
+ // defined as a isWhitespace() char that is neither a isSpaceChar() nor a tab. Both
// MODE_WORDS and MODE_SENTENCES should be active.
return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS
| TextUtils.CAP_MODE_SENTENCES) & reqModes;
diff --git a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
index be3494dc7..3142bd602 100644
--- a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
@@ -140,6 +140,14 @@ public class StringUtilsTests extends AndroidTestCase {
allPathsForCaps("Word", c | w, l, true);
allPathsForCaps("Word.", c | w | s, l, true);
+ // Tests after some whitespace
+ allPathsForCaps("Word\n", c | w | s, l, false);
+ allPathsForCaps("Word\n", c | w | s, l, true);
+ allPathsForCaps("Word\n ", c | w | s, l, true);
+ allPathsForCaps("Word.\n", c | w | s, l, false);
+ allPathsForCaps("Word.\n", c | w | s, l, true);
+ allPathsForCaps("Word.\n ", c | w | s, l, true);
+
l = Locale.FRENCH;
allPathsForCaps("\"Word.\" ", c | w, l, false);
allPathsForCaps("\"Word\". ", c | w | s, l, false);