diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index ddda184aa..32649d5a1 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -241,7 +241,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private static final int MSG_SET_BIGRAM_PREDICTIONS = 7; private static final int MSG_START_ORIENTATION_CHANGE = 8; private static final int MSG_START_INPUT_VIEW = 9; - private static final int MSG_RESTORE_KEYBOARD_LAYOUT = 10; + private static final int MSG_DISPLAY_COMPLETIONS = 10; + private static final int MSG_RESTORE_KEYBOARD_LAYOUT = 11; public UIHandler(LatinIME outerInstance) { super(outerInstance); @@ -293,6 +294,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar case MSG_START_INPUT_VIEW: latinIme.onStartInputView((EditorInfo)msg.obj, false); break; + case MSG_DISPLAY_COMPLETIONS: + latinIme.onDisplayCompletions((CompletionInfo[])msg.obj); + break; case MSG_RESTORE_KEYBOARD_LAYOUT: removeMessages(MSG_UPDATE_SHIFT_STATE); ((KeyboardLayoutState)msg.obj).restore(); @@ -417,6 +421,18 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } return false; } + + public boolean postDisplayCompletions(CompletionInfo[] applicationSpecifiedCompletions) { + if (hasMessages(MSG_START_INPUT_VIEW) || hasMessages(MSG_DISPLAY_COMPLETIONS)) { + removeMessages(MSG_DISPLAY_COMPLETIONS); + // Postpone onDisplayCompletions by ACCUMULATE_START_INPUT_VIEW_DELAY. + sendMessageDelayed( + obtainMessage(MSG_DISPLAY_COMPLETIONS, applicationSpecifiedCompletions), + ACCUMULATE_START_INPUT_VIEW_DELAY); + return true; + } + return false; + } } @Override @@ -923,6 +939,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar @Override public void onDisplayCompletions(CompletionInfo[] applicationSpecifiedCompletions) { + if (mHandler.postDisplayCompletions(applicationSpecifiedCompletions)) { + return; + } if (DEBUG) { Log.i(TAG, "Received completions:"); if (applicationSpecifiedCompletions != null) {