diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 9ef273918402bc3a15c110638caa9bb645da88a0..c867436e5b5f738f358b771c7db4667968fdd3e7 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -928,14 +928,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
 
         final boolean selectionChanged = mLastSelectionStart != newSelStart
                 || mLastSelectionEnd != newSelEnd;
+
         // if composingSpanStart and composingSpanEnd are -1, it means there is no composing
         // span in the view - we can use that to narrow down whether the cursor was moved
         // by us or not. If we are composing a word but there is no composing span, then
         // we know for sure the cursor moved while we were composing and we should reset
         // the state. TODO: rescind this policy: the framework never removes the composing
         // span on its own accord while editing. This test is useless.
-
         final boolean noComposingSpan = composingSpanStart == -1 && composingSpanEnd == -1;
+
         // If the keyboard is not visible, we don't need to do all the housekeeping work, as it
         // will be reset when the keyboard shows up anyway.
         // TODO: revisit this when LatinIME supports hardware keyboards.
@@ -957,7 +958,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
             // state-related special processing to kick in.
             mSpaceState = SPACE_STATE_NONE;
 
-            if ((!mWordComposer.isComposingWord()) || selectionChanged || noComposingSpan) {
+            // TODO: is it still necessary to test for composingSpan related stuff?
+            final boolean selectionChangedOrSafeToReset = selectionChanged
+                    || (!mWordComposer.isComposingWord()) || noComposingSpan;
+            if (selectionChangedOrSafeToReset) {
                 // If we are composing a word and moving the cursor, we would want to set a
                 // suggestion span for recorrection to work correctly. Unfortunately, that
                 // would involve the keyboard committing some new text, which would move the