From 025a5e356ec74dbed7f805a2e43adbb2a35320f8 Mon Sep 17 00:00:00 2001
From: Ken Wakasa <kwakasa@google.com>
Date: Fri, 25 Feb 2011 18:11:18 +0900
Subject: [PATCH] Reset the suggestion status when composing span gets cleared

bug: 3353818

Change-Id: I87b80470015dbeb2eaaec9aa4d9d802597c18e19
---
 .../com/android/inputmethod/latin/LatinIME.java | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 3ff072ef2e..3a97846fa6 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -694,6 +694,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         if (DEBUG) {
             Log.i(TAG, "onUpdateSelection: oss=" + oldSelStart
                     + ", ose=" + oldSelEnd
+                    + ", lss=" + mLastSelectionStart
+                    + ", lse=" + mLastSelectionEnd
                     + ", nss=" + newSelStart
                     + ", nse=" + newSelEnd
                     + ", cs=" + candidatesStart
@@ -704,9 +706,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
 
         // If the current selection in the text view changes, we should
         // clear whatever candidate text we have.
-        if ((((mComposing.length() > 0 && mHasValidSuggestions)
-                || mVoiceConnector.isVoiceInputHighlighted()) && (newSelStart != candidatesEnd
-                        || newSelEnd != candidatesEnd) && mLastSelectionStart != newSelStart)) {
+        final boolean selectionChanged = (newSelStart != candidatesEnd
+                || newSelEnd != candidatesEnd) && mLastSelectionStart != newSelStart;
+        final boolean candidatesCleared = candidatesStart == -1 && candidatesEnd == -1;
+        if (((mComposing.length() > 0 && mHasValidSuggestions)
+                || mVoiceConnector.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 candidate strip.  Then, we'll be able to show
+                // suggestions for recorrection right away.
+                saveWordInHistory(mComposing);
+            }
             mComposing.setLength(0);
             mHasValidSuggestions = false;
             mHandler.postUpdateSuggestions();
-- 
GitLab