diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 0529ecaa9..354856320 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1341,13 +1341,21 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // Batch input has ended or canceled while the message was being delivered. return; } - getSuggestedWordsGestureLocked(batchPointers, sequenceNumber, + mLatinIme.mInputLogic.mWordComposer.setBatchInputPointers(batchPointers); + getSuggestedWords(Suggest.SESSION_GESTURE, sequenceNumber, new OnGetSuggestedWordsCallback() { @Override - public void onGetSuggestedWords(final SuggestedWords suggestedWords) { + public void onGetSuggestedWords(SuggestedWords suggestedWords) { // We're now inside the callback. This always runs on the // InputUpdater thread, no matter what thread updateBatchInput // was called on. + if (suggestedWords.isEmpty()) { + // Use old suggestions if we don't have any new ones. + // Previous suggestions are found in InputLogic#mSuggestedWords. + // Since these are the most recent ones and we just recomputed + // new ones to update them, then the previous ones are there. + suggestedWords = mLatinIme.mInputLogic.mSuggestedWords; + } mLatinIme.mHandler.showGesturePreviewAndSuggestionStrip( suggestedWords, forEnd /* dismissGestureFloatingPreviewText */); @@ -1404,27 +1412,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen updateBatchInput(batchPointers, sequenceNumber, true /* forEnd */); } - // {@link LatinIME#getSuggestedWords(int)} method calls with same session id have to - // be synchronized. - private void getSuggestedWordsGestureLocked(final InputPointers batchPointers, - final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { - mLatinIme.mInputLogic.mWordComposer.setBatchInputPointers(batchPointers); - getSuggestedWords(Suggest.SESSION_GESTURE, sequenceNumber, - new OnGetSuggestedWordsCallback() { - @Override - public void onGetSuggestedWords(SuggestedWords suggestedWords) { - if (suggestedWords.isEmpty()) { - // Previous suggestions are found in InputLogic#mSuggestedWords. - // Since these are the most recent ones and we just recomputed new - // ones to update them, it means the previous ones are there. - callback.onGetSuggestedWords(mLatinIme.mInputLogic.mSuggestedWords); - } else { - callback.onGetSuggestedWords(suggestedWords); - } - } - }); - } - public void getSuggestedWords(final int sessionId, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { mHandler.obtainMessage(MSG_GET_SUGGESTED_WORDS, sessionId, sequenceNumber, callback)