diff options
author | 2014-08-01 14:15:33 +0900 | |
---|---|---|
committer | 2014-08-04 12:41:07 +0900 | |
commit | e0bad8e988a23553181fb670f8a2589a79f22c40 (patch) | |
tree | 6130ed94671d88523622f775d3e0b1cf773ec0e2 /java/src/com/android/inputmethod/latin | |
parent | c4696b2eb6b25eea4d5c869683104ab99aec0421 (diff) | |
download | latinime-e0bad8e988a23553181fb670f8a2589a79f22c40.tar.gz latinime-e0bad8e988a23553181fb670f8a2589a79f22c40.tar.xz latinime-e0bad8e988a23553181fb670f8a2589a79f22c40.zip |
[HW12] Use the consumed status of the Event.
Change-Id: I1619f6132f8f71bc1291fd6a5604a5e1e3431ae2
Diffstat (limited to 'java/src/com/android/inputmethod/latin')
-rw-r--r-- | java/src/com/android/inputmethod/latin/WordComposer.java | 3 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index 3b6904847..32d1fe372 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -184,6 +184,9 @@ public final class WordComposer { @Nonnull public Event processEvent(final Event event) { final Event processedEvent = mCombinerChain.processEvent(mEvents, event); + // The retained state of the combiner chain may have changed while processing the event, + // so we need to update our cache. + refreshTypedWordCache(); mEvents.add(event); return processedEvent; } diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index e2feb7c4d..dee7cd466 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -206,7 +206,7 @@ public final class InputLogic { final int keyboardShiftMode, // TODO: remove this argument final LatinIME.UIHandler handler) { - final String rawText = event.mText.toString(); + final String rawText = event.getTextToCommit().toString(); final InputTransaction inputTransaction = new InputTransaction(settingsValues, event, SystemClock.uptimeMillis(), mSpaceState, getActualCapsMode(settingsValues, keyboardShiftMode)); @@ -416,6 +416,8 @@ public final class InputLogic { mLastKeyTime = inputTransaction.mTimestamp; mConnection.beginBatchEdit(); if (!mWordComposer.isComposingWord()) { + // TODO: is this useful? It doesn't look like it should be done here, but rather after + // a word is committed. mIsAutoCorrectionIndicatorOn = false; } @@ -425,7 +427,21 @@ public final class InputLogic { } boolean didAutoCorrect = false; - if (processedEvent.isFunctionalKeyEvent()) { + if (processedEvent.isConsumed()) { + // A consumed event may have text to commit and an update to the composing state, so + // we evaluate both. With some combiners, it's possible than an event contains both + // and we enter both of the following if clauses. + final CharSequence textToCommit = processedEvent.getTextToCommit(); + if (!TextUtils.isEmpty(textToCommit)) { + mConnection.commitText(textToCommit, 1); + inputTransaction.setDidAffectContents(); + } + if (mWordComposer.isComposingWord()) { + mConnection.setComposingText(mWordComposer.getTypedWord(), 1); + inputTransaction.setDidAffectContents(); + inputTransaction.setRequiresUpdateSuggestions(); + } + } else if (processedEvent.isFunctionalKeyEvent()) { // A special key, like delete, shift, emoji, or the settings key. switch (processedEvent.mKeyCode) { case Constants.CODE_DELETE: |