Loading java/src/com/android/inputmethod/event/Event.java +2 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,8 @@ public class Event { public boolean isConsumed() { return 0 != (FLAG_CONSUMED & mFlags); } public boolean isGesture() { return EVENT_TYPE_GESTURE == mEventType; } // Returns whether this is a fake key press from the suggestion strip. This happens with // punctuation signs selected from the suggestion strip. public boolean isSuggestionStripPress() { Loading java/src/com/android/inputmethod/event/InputTransaction.java +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ public class InputTransaction { // Initial conditions public final SettingsValues mSettingsValues; private final Event mEvent; public final Event mEvent; public final long mTimestamp; public final int mSpaceState; public final int mShiftState; Loading java/src/com/android/inputmethod/latin/LatinIME.java +19 −8 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen new Runnable() { @Override public void run() { mHandler.postUpdateSuggestionStrip(); mHandler.postUpdateSuggestionStrip(SuggestedWords.INPUT_STYLE_NONE); } }); private final InputLogic mInputLogic = new InputLogic(this /* LatinIME */, Loading Loading @@ -220,7 +220,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen case MSG_UPDATE_SUGGESTION_STRIP: cancelUpdateSuggestionStrip(); latinIme.mInputLogic.performUpdateSuggestionStripSync( latinIme.mSettings.getCurrent()); latinIme.mSettings.getCurrent(), msg.arg1 /* inputStyle */); break; case MSG_UPDATE_SHIFT_STATE: switcher.requestUpdatingShiftState(latinIme.getCurrentAutoCapsState(), Loading Loading @@ -270,8 +270,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } public void postUpdateSuggestionStrip() { sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION_STRIP), mDelayUpdateSuggestions); public void postUpdateSuggestionStrip(final int inputStyle) { sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION_STRIP, inputStyle, 0 /* ignored */), mDelayUpdateSuggestions); } public void postReopenDictionaries() { Loading Loading @@ -1060,7 +1061,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen applicationSpecifiedCompletions); final SuggestedWords suggestedWords = new SuggestedWords(applicationSuggestedWords, null /* rawSuggestions */, false /* typedWordValid */, false /* willAutoCorrect */, false /* isObsoleteSuggestions */, false /* isPrediction */); false /* isObsoleteSuggestions */, false /* isPrediction */, SuggestedWords.INPUT_STYLE_APPLICATION_SPECIFIED /* inputStyle */); // When in fullscreen mode, show completions generated by the application forcibly setSuggestedWords(suggestedWords); } Loading Loading @@ -1451,7 +1453,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } // TODO[IL]: Move this out of LatinIME. public void getSuggestedWords(final int sessionId, final int sequenceNumber, public void getSuggestedWords(final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final Keyboard keyboard = mKeyboardSwitcher.getKeyboard(); if (keyboard == null) { Loading @@ -1459,7 +1461,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen return; } mInputLogic.getSuggestedWords(mSettings.getCurrent(), keyboard.getProximityInfo(), mKeyboardSwitcher.getKeyboardShiftMode(), sessionId, sequenceNumber, callback); mKeyboardSwitcher.getKeyboardShiftMode(), inputStyle, sequenceNumber, callback); } @Override Loading Loading @@ -1543,7 +1545,16 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen default: // SHIFT_NO_UPDATE } if (inputTransaction.requiresUpdateSuggestions()) { mHandler.postUpdateSuggestionStrip(); final int inputStyle; if (inputTransaction.mEvent.isSuggestionStripPress()) { // Suggestion strip press: no input. inputStyle = SuggestedWords.INPUT_STYLE_NONE; } else if (inputTransaction.mEvent.isGesture()) { inputStyle = SuggestedWords.INPUT_STYLE_TAIL_BATCH; } else { inputStyle = SuggestedWords.INPUT_STYLE_TYPING; } mHandler.postUpdateSuggestionStrip(inputStyle); } if (inputTransaction.didAffectContents()) { mSubtypeState.setCurrentSubtypeHasBeenUsed(); Loading java/src/com/android/inputmethod/latin/PunctuationSuggestions.java +2 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,8 @@ public final class PunctuationSuggestions extends SuggestedWords { false /* typedWordValid */, false /* hasAutoCorrectionCandidate */, false /* isObsoleteSuggestions */, false /* isPrediction */); false /* isPrediction */, INPUT_STYLE_NONE /* inputStyle */); } /** Loading java/src/com/android/inputmethod/latin/Suggest.java +18 −19 Original line number Diff line number Diff line Loading @@ -40,13 +40,8 @@ public final class Suggest { // Session id for // {@link #getSuggestedWords(WordComposer,String,ProximityInfo,boolean,int)}. // We are sharing the same ID between typing and gesture to save RAM footprint. public static final int SESSION_TYPING = 0; public static final int SESSION_GESTURE = 0; // TODO: rename this to CORRECTION_OFF public static final int CORRECTION_NONE = 0; // TODO: rename this to CORRECTION_ON public static final int CORRECTION_FULL = 1; public static final int SESSION_ID_TYPING = 0; public static final int SESSION_ID_GESTURE = 0; // Close to -2**31 private static final int SUPPRESS_SUGGEST_THRESHOLD = -2000000000; Loading Loading @@ -75,14 +70,15 @@ public final class Suggest { public void getSuggestedWords(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final boolean isCorrectionEnabled, final int sessionId, final int sequenceNumber, final boolean isCorrectionEnabled, final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { if (wordComposer.isBatchMode()) { getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId, sequenceNumber, callback); settingsValuesForSuggestion, inputStyle, sequenceNumber, callback); } else { getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, isCorrectionEnabled, sequenceNumber, callback); getSuggestedWordsForNonBatchInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, inputStyle, isCorrectionEnabled, sequenceNumber, callback); } } Loading Loading @@ -120,11 +116,11 @@ public final class Suggest { return firstSuggestedWordInfo.mWord; } // Retrieves suggestions for the typing input // Retrieves suggestions for non-batch input (typing, recorrection, predictions...) // and calls the callback function with the suggestions. private void getSuggestedWordsForTypingInput(final WordComposer wordComposer, private void getSuggestedWordsForNonBatchInput(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int inputStyle, final boolean isCorrectionEnabled, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final String typedWord = wordComposer.getTypedWord(); Loading @@ -135,7 +131,7 @@ public final class Suggest { final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, SESSION_TYPING); SESSION_ID_TYPING); final ArrayList<SuggestedWordInfo> suggestionsContainer = getTransformedSuggestedWordInfoList(wordComposer, suggestionResults, trailingSingleQuotesCount); Loading Loading @@ -197,7 +193,8 @@ public final class Suggest { // rename the attribute or change the value. !resultsArePredictions && !allowsToBeAutoCorrected /* typedWordValid */, hasAutoCorrection /* willAutoCorrect */, false /* isObsoleteSuggestions */, resultsArePredictions, sequenceNumber)); false /* isObsoleteSuggestions */, resultsArePredictions, inputStyle, sequenceNumber)); } // Retrieves suggestions for the batch input Loading @@ -205,10 +202,11 @@ public final class Suggest { private void getSuggestedWordsForBatchInput(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId, final int sequenceNumber, final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId); wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, SESSION_ID_GESTURE); final ArrayList<SuggestedWordInfo> suggestionsContainer = new ArrayList<>(suggestionResults); final int suggestionsCount = suggestionsContainer.size(); Loading Loading @@ -246,7 +244,8 @@ public final class Suggest { true /* typedWordValid */, false /* willAutoCorrect */, false /* isObsoleteSuggestions */, false /* isPrediction */, sequenceNumber)); false /* isPrediction */, inputStyle, sequenceNumber)); } private static ArrayList<SuggestedWordInfo> getSuggestionsInfoListWithDebugInfo( Loading Loading
java/src/com/android/inputmethod/event/Event.java +2 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,8 @@ public class Event { public boolean isConsumed() { return 0 != (FLAG_CONSUMED & mFlags); } public boolean isGesture() { return EVENT_TYPE_GESTURE == mEventType; } // Returns whether this is a fake key press from the suggestion strip. This happens with // punctuation signs selected from the suggestion strip. public boolean isSuggestionStripPress() { Loading
java/src/com/android/inputmethod/event/InputTransaction.java +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ public class InputTransaction { // Initial conditions public final SettingsValues mSettingsValues; private final Event mEvent; public final Event mEvent; public final long mTimestamp; public final int mSpaceState; public final int mShiftState; Loading
java/src/com/android/inputmethod/latin/LatinIME.java +19 −8 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen new Runnable() { @Override public void run() { mHandler.postUpdateSuggestionStrip(); mHandler.postUpdateSuggestionStrip(SuggestedWords.INPUT_STYLE_NONE); } }); private final InputLogic mInputLogic = new InputLogic(this /* LatinIME */, Loading Loading @@ -220,7 +220,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen case MSG_UPDATE_SUGGESTION_STRIP: cancelUpdateSuggestionStrip(); latinIme.mInputLogic.performUpdateSuggestionStripSync( latinIme.mSettings.getCurrent()); latinIme.mSettings.getCurrent(), msg.arg1 /* inputStyle */); break; case MSG_UPDATE_SHIFT_STATE: switcher.requestUpdatingShiftState(latinIme.getCurrentAutoCapsState(), Loading Loading @@ -270,8 +270,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } public void postUpdateSuggestionStrip() { sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION_STRIP), mDelayUpdateSuggestions); public void postUpdateSuggestionStrip(final int inputStyle) { sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION_STRIP, inputStyle, 0 /* ignored */), mDelayUpdateSuggestions); } public void postReopenDictionaries() { Loading Loading @@ -1060,7 +1061,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen applicationSpecifiedCompletions); final SuggestedWords suggestedWords = new SuggestedWords(applicationSuggestedWords, null /* rawSuggestions */, false /* typedWordValid */, false /* willAutoCorrect */, false /* isObsoleteSuggestions */, false /* isPrediction */); false /* isObsoleteSuggestions */, false /* isPrediction */, SuggestedWords.INPUT_STYLE_APPLICATION_SPECIFIED /* inputStyle */); // When in fullscreen mode, show completions generated by the application forcibly setSuggestedWords(suggestedWords); } Loading Loading @@ -1451,7 +1453,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } // TODO[IL]: Move this out of LatinIME. public void getSuggestedWords(final int sessionId, final int sequenceNumber, public void getSuggestedWords(final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final Keyboard keyboard = mKeyboardSwitcher.getKeyboard(); if (keyboard == null) { Loading @@ -1459,7 +1461,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen return; } mInputLogic.getSuggestedWords(mSettings.getCurrent(), keyboard.getProximityInfo(), mKeyboardSwitcher.getKeyboardShiftMode(), sessionId, sequenceNumber, callback); mKeyboardSwitcher.getKeyboardShiftMode(), inputStyle, sequenceNumber, callback); } @Override Loading Loading @@ -1543,7 +1545,16 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen default: // SHIFT_NO_UPDATE } if (inputTransaction.requiresUpdateSuggestions()) { mHandler.postUpdateSuggestionStrip(); final int inputStyle; if (inputTransaction.mEvent.isSuggestionStripPress()) { // Suggestion strip press: no input. inputStyle = SuggestedWords.INPUT_STYLE_NONE; } else if (inputTransaction.mEvent.isGesture()) { inputStyle = SuggestedWords.INPUT_STYLE_TAIL_BATCH; } else { inputStyle = SuggestedWords.INPUT_STYLE_TYPING; } mHandler.postUpdateSuggestionStrip(inputStyle); } if (inputTransaction.didAffectContents()) { mSubtypeState.setCurrentSubtypeHasBeenUsed(); Loading
java/src/com/android/inputmethod/latin/PunctuationSuggestions.java +2 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,8 @@ public final class PunctuationSuggestions extends SuggestedWords { false /* typedWordValid */, false /* hasAutoCorrectionCandidate */, false /* isObsoleteSuggestions */, false /* isPrediction */); false /* isPrediction */, INPUT_STYLE_NONE /* inputStyle */); } /** Loading
java/src/com/android/inputmethod/latin/Suggest.java +18 −19 Original line number Diff line number Diff line Loading @@ -40,13 +40,8 @@ public final class Suggest { // Session id for // {@link #getSuggestedWords(WordComposer,String,ProximityInfo,boolean,int)}. // We are sharing the same ID between typing and gesture to save RAM footprint. public static final int SESSION_TYPING = 0; public static final int SESSION_GESTURE = 0; // TODO: rename this to CORRECTION_OFF public static final int CORRECTION_NONE = 0; // TODO: rename this to CORRECTION_ON public static final int CORRECTION_FULL = 1; public static final int SESSION_ID_TYPING = 0; public static final int SESSION_ID_GESTURE = 0; // Close to -2**31 private static final int SUPPRESS_SUGGEST_THRESHOLD = -2000000000; Loading Loading @@ -75,14 +70,15 @@ public final class Suggest { public void getSuggestedWords(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final boolean isCorrectionEnabled, final int sessionId, final int sequenceNumber, final boolean isCorrectionEnabled, final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { if (wordComposer.isBatchMode()) { getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId, sequenceNumber, callback); settingsValuesForSuggestion, inputStyle, sequenceNumber, callback); } else { getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, isCorrectionEnabled, sequenceNumber, callback); getSuggestedWordsForNonBatchInput(wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, inputStyle, isCorrectionEnabled, sequenceNumber, callback); } } Loading Loading @@ -120,11 +116,11 @@ public final class Suggest { return firstSuggestedWordInfo.mWord; } // Retrieves suggestions for the typing input // Retrieves suggestions for non-batch input (typing, recorrection, predictions...) // and calls the callback function with the suggestions. private void getSuggestedWordsForTypingInput(final WordComposer wordComposer, private void getSuggestedWordsForNonBatchInput(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int inputStyle, final boolean isCorrectionEnabled, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final String typedWord = wordComposer.getTypedWord(); Loading @@ -135,7 +131,7 @@ public final class Suggest { final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, SESSION_TYPING); SESSION_ID_TYPING); final ArrayList<SuggestedWordInfo> suggestionsContainer = getTransformedSuggestedWordInfoList(wordComposer, suggestionResults, trailingSingleQuotesCount); Loading Loading @@ -197,7 +193,8 @@ public final class Suggest { // rename the attribute or change the value. !resultsArePredictions && !allowsToBeAutoCorrected /* typedWordValid */, hasAutoCorrection /* willAutoCorrect */, false /* isObsoleteSuggestions */, resultsArePredictions, sequenceNumber)); false /* isObsoleteSuggestions */, resultsArePredictions, inputStyle, sequenceNumber)); } // Retrieves suggestions for the batch input Loading @@ -205,10 +202,11 @@ public final class Suggest { private void getSuggestedWordsForBatchInput(final WordComposer wordComposer, final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId, final int sequenceNumber, final int inputStyle, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId); wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, SESSION_ID_GESTURE); final ArrayList<SuggestedWordInfo> suggestionsContainer = new ArrayList<>(suggestionResults); final int suggestionsCount = suggestionsContainer.size(); Loading Loading @@ -246,7 +244,8 @@ public final class Suggest { true /* typedWordValid */, false /* willAutoCorrect */, false /* isObsoleteSuggestions */, false /* isPrediction */, sequenceNumber)); false /* isPrediction */, inputStyle, sequenceNumber)); } private static ArrayList<SuggestedWordInfo> getSuggestionsInfoListWithDebugInfo( Loading