diff options
Diffstat (limited to 'java/src/com/android/inputmethod/latin/inputlogic')
-rw-r--r-- | java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java | 37 |
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()) { |