diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dfb4d062226bd259c7d6893a6e7ec7547b4c065d..645a8bb1e55b1257c22bf1f833c702da7a338a61 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -884,35 +884,34 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         final boolean selectionChanged = (newSelStart != candidatesEnd
                 || newSelEnd != candidatesEnd) && mLastSelectionStart != newSelStart;
         final boolean candidatesCleared = candidatesStart == -1 && candidatesEnd == -1;
-        if (!mExpectingUpdateSelection
-                && ((mComposingStringBuilder.length() > 0 && mHasUncommittedTypedChars)
-                || mVoiceProxy.isVoiceInputHighlighted())
-                && (selectionChanged || candidatesCleared)) {
-            if (candidatesCleared) {
-                // If the composing span has been cleared, save the typed word in the history for
-                // recorrection before we reset the suggestions strip.  Then, we'll be able to show
-                // suggestions for recorrection right away.
-                mRecorrection.saveRecorrectionSuggestion(mWordComposer, mComposingStringBuilder);
-            }
-            mComposingStringBuilder.setLength(0);
-            mHasUncommittedTypedChars = false;
-            if (isCursorTouchingWord()) {
-                mHandler.cancelUpdateBigramPredictions();
-                mHandler.postUpdateSuggestions();
-            } else {
-                setPunctuationSuggestions();
-            }
-            TextEntryState.reset();
-            final InputConnection ic = getCurrentInputConnection();
-            if (ic != null) {
-                ic.finishComposingText();
-            }
-            mVoiceProxy.setVoiceInputHighlighted(false);
-        } else if (!mHasUncommittedTypedChars && !mExpectingUpdateSelection
-                && TextEntryState.isAcceptedDefault()) {
-            TextEntryState.reset();
-        }
         if (!mExpectingUpdateSelection) {
+            if (((mComposingStringBuilder.length() > 0 && mHasUncommittedTypedChars)
+                    || mVoiceProxy.isVoiceInputHighlighted())
+                    && (selectionChanged || candidatesCleared)) {
+                if (candidatesCleared) {
+                    // If the composing span has been cleared, save the typed word in the history
+                    // for recorrection before we reset the suggestions strip.  Then, we'll be able
+                    // to show suggestions for recorrection right away.
+                    mRecorrection.saveRecorrectionSuggestion(mWordComposer,
+                            mComposingStringBuilder);
+                }
+                mComposingStringBuilder.setLength(0);
+                mHasUncommittedTypedChars = false;
+                if (isCursorTouchingWord()) {
+                    mHandler.cancelUpdateBigramPredictions();
+                    mHandler.postUpdateSuggestions();
+                } else {
+                    setPunctuationSuggestions();
+                }
+                TextEntryState.reset();
+                final InputConnection ic = getCurrentInputConnection();
+                if (ic != null) {
+                    ic.finishComposingText();
+                }
+                mVoiceProxy.setVoiceInputHighlighted(false);
+            } else if (!mHasUncommittedTypedChars && TextEntryState.isAcceptedDefault()) {
+                TextEntryState.reset();
+            }
             mJustAddedMagicSpace = false; // The user moved the cursor.
             mJustReplacedDoubleSpace = false;
         }