Fix a bug with single quotes

I14dd3815 special-cased single quotes at the start of a word, but
did not do so correctly - it would kill a composing word if entered
just after some punctuations.
The right test was not isCursorTouchingWord() but
mHasUncommittedTypedChars, which actually makes for a simpler
implementation.

Bug: 5648032
Change-Id: Icd21d213e0cad6da68cacfeb921502cd8dcfac95
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dc5ec2d..f4a1c6a 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1539,16 +1539,15 @@
         if ((isAlphabet(code) || mSettingsValues.isSymbolExcludedFromWordSeparators(code))
                 && isSuggestionsRequested() && !isCursorTouchingWord()) {
             if (!mHasUncommittedTypedChars) {
-                mHasUncommittedTypedChars = true;
+                // Reset entirely the composing state anyway, then start composing a new word unless
+                // the character is a single quote.
+                mHasUncommittedTypedChars = (Keyboard.CODE_SINGLE_QUOTE != code);
                 mComposingStringBuilder.setLength(0);
                 mWordComposer.reset();
                 clearSuggestions();
                 mComposingStateManager.onFinishComposingText();
             }
         }
-        if (code == Keyboard.CODE_SINGLE_QUOTE && !isCursorTouchingWord()) {
-            mHasUncommittedTypedChars = false;
-        }
         final KeyboardSwitcher switcher = mKeyboardSwitcher;
         if (switcher.isShiftedOrShiftLocked()) {
             if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT