aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/RichInputConnection.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/RichInputConnection.java')
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputConnection.java100
1 files changed, 50 insertions, 50 deletions
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index e9c81dab0..9cb24b54e 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -178,9 +178,6 @@ public final class RichInputConnection {
mComposingText.setLength(0);
if (null != mIC) {
mIC.commitText(text, i);
- if (ProductionFlag.IS_EXPERIMENTAL) {
- ResearchLogger.richInputConnection_commitText(text, i);
- }
}
}
@@ -287,40 +284,40 @@ public final class RichInputConnection {
if (DEBUG_BATCH_NESTING) checkBatchEdit();
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
- // This method is only called for enter or backspace when speaking to old
- // applications (target SDK <= 15), or for digits.
+ // This method is only called for enter or backspace when speaking to old applications
+ // (target SDK <= 15 (Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)), or for digits.
// When talking to new applications we never use this method because it's inherently
// racy and has unpredictable results, but for backward compatibility we continue
// sending the key events for only Enter and Backspace because some applications
// mistakenly catch them to do some stuff.
switch (keyEvent.getKeyCode()) {
- case KeyEvent.KEYCODE_ENTER:
- mCommittedTextBeforeComposingText.append("\n");
- mCurrentCursorPosition += 1;
- break;
- case KeyEvent.KEYCODE_DEL:
- if (0 == mComposingText.length()) {
- if (mCommittedTextBeforeComposingText.length() > 0) {
- mCommittedTextBeforeComposingText.delete(
- mCommittedTextBeforeComposingText.length() - 1,
- mCommittedTextBeforeComposingText.length());
- }
- } else {
- mComposingText.delete(mComposingText.length() - 1, mComposingText.length());
- }
- if (mCurrentCursorPosition > 0) mCurrentCursorPosition -= 1;
- break;
- case KeyEvent.KEYCODE_UNKNOWN:
- if (null != keyEvent.getCharacters()) {
- mCommittedTextBeforeComposingText.append(keyEvent.getCharacters());
- mCurrentCursorPosition += keyEvent.getCharacters().length();
+ case KeyEvent.KEYCODE_ENTER:
+ mCommittedTextBeforeComposingText.append("\n");
+ mCurrentCursorPosition += 1;
+ break;
+ case KeyEvent.KEYCODE_DEL:
+ if (0 == mComposingText.length()) {
+ if (mCommittedTextBeforeComposingText.length() > 0) {
+ mCommittedTextBeforeComposingText.delete(
+ mCommittedTextBeforeComposingText.length() - 1,
+ mCommittedTextBeforeComposingText.length());
}
- break;
- default:
- final String text = new String(new int[] { keyEvent.getUnicodeChar() }, 0, 1);
- mCommittedTextBeforeComposingText.append(text);
- mCurrentCursorPosition += text.length();
- break;
+ } else {
+ mComposingText.delete(mComposingText.length() - 1, mComposingText.length());
+ }
+ if (mCurrentCursorPosition > 0) mCurrentCursorPosition -= 1;
+ break;
+ case KeyEvent.KEYCODE_UNKNOWN:
+ if (null != keyEvent.getCharacters()) {
+ mCommittedTextBeforeComposingText.append(keyEvent.getCharacters());
+ mCurrentCursorPosition += keyEvent.getCharacters().length();
+ }
+ break;
+ default:
+ final String text = new String(new int[] { keyEvent.getUnicodeChar() }, 0, 1);
+ mCommittedTextBeforeComposingText.append(text);
+ mCurrentCursorPosition += text.length();
+ break;
}
}
if (null != mIC) {
@@ -537,17 +534,17 @@ public final class RichInputConnection {
// Going backward, alternate skipping non-separators and separators until enough words
// have been read.
int count = additionalPrecedingWordsCount;
- int start = before.length();
+ int startIndexInBefore = before.length();
boolean isStoppingAtWhitespace = true; // toggles to indicate what to stop at
while (true) { // see comments below for why this is guaranteed to halt
- while (start > 0) {
- final int codePoint = Character.codePointBefore(before, start);
+ while (startIndexInBefore > 0) {
+ final int codePoint = Character.codePointBefore(before, startIndexInBefore);
if (isStoppingAtWhitespace == isSeparator(codePoint, sep)) {
break; // inner loop
}
- --start;
+ --startIndexInBefore;
if (Character.isSupplementaryCodePoint(codePoint)) {
- --start;
+ --startIndexInBefore;
}
}
// isStoppingAtWhitespace is true every other time through the loop,
@@ -560,25 +557,20 @@ public final class RichInputConnection {
}
// Find last word separator after the cursor
- int end = -1;
- while (++end < after.length()) {
- final int codePoint = Character.codePointAt(after, end);
+ int endIndexInAfter = -1;
+ while (++endIndexInAfter < after.length()) {
+ final int codePoint = Character.codePointAt(after, endIndexInAfter);
if (isSeparator(codePoint, sep)) {
break;
}
if (Character.isSupplementaryCodePoint(codePoint)) {
- ++end;
+ ++endIndexInAfter;
}
}
- final int cursor = getCursorPosition();
- if (start >= 0 && cursor + end <= after.length() + before.length()) {
- String word = before.toString().substring(start, before.length())
- + after.toString().substring(0, end);
- return new Range(before.length() - start, end, word);
- }
-
- return null;
+ final String word = before.toString().substring(startIndexInBefore, before.length())
+ + after.toString().substring(0, endIndexInAfter);
+ return new Range(before.length() - startIndexInBefore, endIndexInAfter, word);
}
public boolean isCursorTouchingWord(final SettingsValues settingsValues) {
@@ -665,7 +657,11 @@ public final class RichInputConnection {
return false;
}
deleteSurroundingText(2, 0);
- commitText(" ", 1);
+ final String doubleSpace = " ";
+ commitText(doubleSpace, 1);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ ResearchLogger.getInstance().onWordComplete(doubleSpace, Long.MAX_VALUE);
+ }
return true;
}
@@ -686,7 +682,11 @@ public final class RichInputConnection {
return false;
}
deleteSurroundingText(2, 0);
- commitText(" " + textBeforeCursor.subSequence(0, 1), 1);
+ final String text = " " + textBeforeCursor.subSequence(0, 1);
+ commitText(text, 1);
+ if (ProductionFlag.IS_EXPERIMENTAL) {
+ ResearchLogger.getInstance().onWordComplete(text, Long.MAX_VALUE);
+ }
return true;
}