aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/inputlogic
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/inputlogic')
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java37
1 files changed, 22 insertions, 15 deletions
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index bb2d304a6..cb8b9c4db 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -405,6 +405,7 @@ public final class InputLogic {
final int keyboardShiftMode,
// TODO: remove these arguments
final int currentKeyboardScriptId, final LatinIME.UIHandler handler) {
+ final Event processedEvent = mWordComposer.processEvent(event);
final InputTransaction inputTransaction = new InputTransaction(settingsValues, event,
SystemClock.uptimeMillis(), mSpaceState,
getActualCapsMode(settingsValues, keyboardShiftMode));
@@ -428,7 +429,7 @@ public final class InputLogic {
// A special key, like delete, shift, emoji, or the settings key.
switch (event.mKeyCode) {
case Constants.CODE_DELETE:
- handleBackspace(inputTransaction, currentKeyboardScriptId);
+ handleBackspace(inputTransaction, currentKeyboardScriptId, processedEvent);
// Backspace is a functional key, but it affects the contents of the editor.
inputTransaction.setDidAffectContents();
break;
@@ -483,7 +484,7 @@ public final class InputLogic {
inputTransaction.mSettingsValues, tmpEvent,
inputTransaction.mTimestamp, inputTransaction.mSpaceState,
inputTransaction.mShiftState);
- didAutoCorrect = handleNonSpecialCharacter(tmpTransaction, handler);
+ didAutoCorrect = handleNonSpecialCharacter(tmpTransaction, handler, processedEvent);
// Shift + Enter is treated as a functional key but it results in adding a new
// line, so that does affect the contents of the editor.
inputTransaction.setDidAffectContents();
@@ -514,11 +515,13 @@ public final class InputLogic {
} else {
// No action label, and the action from imeOptions is NONE: this is a regular
// enter key that should input a carriage return.
- didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler);
+ didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler,
+ processedEvent);
}
break;
default:
- didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler);
+ didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler,
+ processedEvent);
break;
}
}
@@ -680,14 +683,16 @@ public final class InputLogic {
*/
private boolean handleNonSpecialCharacter(final InputTransaction inputTransaction,
// TODO: remove this argument
- final LatinIME.UIHandler handler) {
- final int codePoint = inputTransaction.mEvent.mCodePoint;
+ final LatinIME.UIHandler handler,
+ // TODO: remove this argument, put it inside the transaction
+ final Event processedEvent) {
+ final int codePoint = processedEvent.mCodePoint;
mSpaceState = SpaceState.NONE;
final boolean didAutoCorrect;
if (inputTransaction.mSettingsValues.isWordSeparator(codePoint)
|| Character.getType(codePoint) == Character.OTHER_SYMBOL) {
didAutoCorrect = handleSeparator(inputTransaction,
- inputTransaction.mEvent.isSuggestionStripPress(), handler);
+ processedEvent.isSuggestionStripPress(), handler);
} else {
didAutoCorrect = false;
if (SpaceState.PHANTOM == inputTransaction.mSpaceState) {
@@ -700,7 +705,7 @@ public final class InputLogic {
commitTyped(inputTransaction.mSettingsValues, LastComposedWord.NOT_A_SEPARATOR);
}
}
- handleNonSeparator(inputTransaction.mSettingsValues, inputTransaction);
+ handleNonSeparator(inputTransaction.mSettingsValues, inputTransaction, processedEvent);
}
return didAutoCorrect;
}
@@ -711,8 +716,10 @@ public final class InputLogic {
* @param inputTransaction The transaction in progress.
*/
private void handleNonSeparator(final SettingsValues settingsValues,
- final InputTransaction inputTransaction) {
- final int codePoint = inputTransaction.mEvent.mCodePoint;
+ final InputTransaction inputTransaction,
+ // TODO: remove this arg, put it into the input transaction
+ final Event processedEvent) {
+ final int codePoint = processedEvent.mCodePoint;
// TODO: refactor this method to stop flipping isComposingWord around all the time, and
// make it shorter (possibly cut into several pieces). Also factor handleNonSpecialCharacter
// which has the same name as other handle* methods but is not the same.
@@ -762,7 +769,6 @@ public final class InputLogic {
resetComposingState(false /* alsoResetLastComposedWord */);
}
if (isComposingWord) {
- final Event processedEvent = mWordComposer.processEvent(inputTransaction.mEvent);
mWordComposer.applyProcessedEvent(processedEvent);
// If it's the first letter, make note of auto-caps state
if (mWordComposer.isSingleLetter()) {
@@ -772,7 +778,7 @@ public final class InputLogic {
mWordComposer.getTypedWord()), 1);
} else {
final boolean swapWeakSpace = tryStripSpaceAndReturnWhetherShouldSwapInstead(
- inputTransaction, inputTransaction.mEvent.isSuggestionStripPress());
+ inputTransaction, processedEvent.isSuggestionStripPress());
if (swapWeakSpace && trySwapSwapperAndSpace(inputTransaction)) {
mSpaceState = SpaceState.WEAK;
@@ -902,7 +908,9 @@ public final class InputLogic {
*/
private void handleBackspace(final InputTransaction inputTransaction,
// TODO: remove this argument, put it into settingsValues
- final int currentKeyboardScriptId) {
+ final int currentKeyboardScriptId,
+ // TODO: remove this argument, put it into the transaction
+ final Event processedEvent) {
mSpaceState = SpaceState.NONE;
mDeleteCount++;
@@ -914,7 +922,7 @@ public final class InputLogic {
// Then again, even in the case of a key repeat, if the cursor is at start of text, it
// can't go any further back, so we can update right away even if it's a key repeat.
final int shiftUpdateKind =
- inputTransaction.mEvent.isKeyRepeat() && mConnection.getExpectedSelectionStart() > 0
+ processedEvent.isKeyRepeat() && mConnection.getExpectedSelectionStart() > 0
? InputTransaction.SHIFT_UPDATE_LATER : InputTransaction.SHIFT_UPDATE_NOW;
inputTransaction.requireShiftUpdate(shiftUpdateKind);
@@ -934,7 +942,6 @@ public final class InputLogic {
mDictionaryFacilitator.removeWordFromPersonalizedDicts(rejectedSuggestion);
}
} else {
- final Event processedEvent = mWordComposer.processEvent(inputTransaction.mEvent);
mWordComposer.applyProcessedEvent(processedEvent);
}
if (mWordComposer.isComposingWord()) {