Merge "(DO NOT MERGE) Fix showing important notice even at beginning of sentence" into lmp-dev
This commit is contained in:
commit
00e018370f
5 changed files with 41 additions and 17 deletions
|
@ -491,8 +491,9 @@ public class DictionaryFacilitator {
|
||||||
final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
|
final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
|
||||||
final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) {
|
final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) {
|
||||||
final Dictionaries dictionaries = mDictionaries;
|
final Dictionaries dictionaries = mDictionaries;
|
||||||
final SuggestionResults suggestionResults =
|
final SuggestionResults suggestionResults = new SuggestionResults(
|
||||||
new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS);
|
dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS,
|
||||||
|
prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence);
|
||||||
final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT };
|
final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT };
|
||||||
for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
|
for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
|
||||||
final Dictionary dictionary = dictionaries.getDict(dictType);
|
final Dictionary dictionary = dictionaries.getDict(dictType);
|
||||||
|
|
|
@ -1488,19 +1488,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
final boolean isEmptyApplicationSpecifiedCompletions =
|
final boolean isEmptyApplicationSpecifiedCompletions =
|
||||||
currentSettingsValues.isApplicationSpecifiedCompletionsOn()
|
currentSettingsValues.isApplicationSpecifiedCompletionsOn()
|
||||||
&& suggestedWords.isEmpty();
|
&& suggestedWords.isEmpty();
|
||||||
final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords)
|
final boolean noSuggestionsFromDictionaries = (SuggestedWords.EMPTY == suggestedWords)
|
||||||
|| suggestedWords.isPunctuationSuggestions()
|
|| suggestedWords.isPunctuationSuggestions()
|
||||||
|| isEmptyApplicationSpecifiedCompletions;
|
|| isEmptyApplicationSpecifiedCompletions;
|
||||||
if (shouldShowImportantNotice && noSuggestionsToShow) {
|
final boolean isBeginningOfSentencePrediction = (suggestedWords.mInputStyle
|
||||||
|
== SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION);
|
||||||
|
final boolean noSuggestionsToOverrideImportantNotice = noSuggestionsFromDictionaries
|
||||||
|
|| isBeginningOfSentencePrediction;
|
||||||
|
if (shouldShowImportantNotice && noSuggestionsToOverrideImportantNotice) {
|
||||||
if (mSuggestionStripView.maybeShowImportantNoticeTitle()) {
|
if (mSuggestionStripView.maybeShowImportantNoticeTitle()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentSettingsValues.isSuggestionsEnabledPerUserSettings()
|
if (currentSettingsValues.isSuggestionsEnabledPerUserSettings()
|
||||||
// We should clear suggestions if there is no suggestion to show.
|
|| currentSettingsValues.isApplicationSpecifiedCompletionsOn()
|
||||||
|| noSuggestionsToShow
|
// We should clear the contextual strip if there is no suggestion from dictionaries.
|
||||||
|| currentSettingsValues.isApplicationSpecifiedCompletionsOn()) {
|
|| noSuggestionsFromDictionaries) {
|
||||||
mSuggestionStripView.setSuggestions(suggestedWords,
|
mSuggestionStripView.setSuggestions(suggestedWords,
|
||||||
SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
|
SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,8 +186,14 @@ public final class Suggest {
|
||||||
suggestionsList = suggestionsContainer;
|
suggestionsList = suggestionsContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int inputStyle = resultsArePredictions ? SuggestedWords.INPUT_STYLE_PREDICTION :
|
final int inputStyle;
|
||||||
inputStyleIfNotPrediction;
|
if (resultsArePredictions) {
|
||||||
|
inputStyle = suggestionResults.mIsBeginningOfSentence
|
||||||
|
? SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION
|
||||||
|
: SuggestedWords.INPUT_STYLE_PREDICTION;
|
||||||
|
} else {
|
||||||
|
inputStyle = inputStyleIfNotPrediction;
|
||||||
|
}
|
||||||
callback.onGetSuggestedWords(new SuggestedWords(suggestionsList,
|
callback.onGetSuggestedWords(new SuggestedWords(suggestionsList,
|
||||||
suggestionResults.mRawSuggestions,
|
suggestionResults.mRawSuggestions,
|
||||||
// TODO: this first argument is lying. If this is a whitelisted word which is an
|
// TODO: this first argument is lying. If this is a whitelisted word which is an
|
||||||
|
@ -240,6 +246,8 @@ public final class Suggest {
|
||||||
|
|
||||||
// In the batch input mode, the most relevant suggested word should act as a "typed word"
|
// In the batch input mode, the most relevant suggested word should act as a "typed word"
|
||||||
// (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false).
|
// (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false).
|
||||||
|
// Note that because this method is never used to get predictions, there is no need to
|
||||||
|
// modify inputType such in getSuggestedWordsForNonBatchInput.
|
||||||
callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer,
|
callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer,
|
||||||
suggestionResults.mRawSuggestions,
|
suggestionResults.mRawSuggestions,
|
||||||
true /* typedWordValid */,
|
true /* typedWordValid */,
|
||||||
|
|
|
@ -39,6 +39,7 @@ public class SuggestedWords {
|
||||||
public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4;
|
public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4;
|
||||||
public static final int INPUT_STYLE_RECORRECTION = 5;
|
public static final int INPUT_STYLE_RECORRECTION = 5;
|
||||||
public static final int INPUT_STYLE_PREDICTION = 6;
|
public static final int INPUT_STYLE_PREDICTION = 6;
|
||||||
|
public static final int INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION = 7;
|
||||||
|
|
||||||
// The maximum number of suggestions available.
|
// The maximum number of suggestions available.
|
||||||
public static final int MAX_SUGGESTIONS = 18;
|
public static final int MAX_SUGGESTIONS = 18;
|
||||||
|
@ -80,10 +81,9 @@ public class SuggestedWords {
|
||||||
final int inputStyle,
|
final int inputStyle,
|
||||||
final int sequenceNumber) {
|
final int sequenceNumber) {
|
||||||
this(suggestedWordInfoList, rawSuggestions,
|
this(suggestedWordInfoList, rawSuggestions,
|
||||||
(suggestedWordInfoList.isEmpty() || INPUT_STYLE_PREDICTION == inputStyle) ? null
|
(suggestedWordInfoList.isEmpty() || isPrediction(inputStyle)) ? null
|
||||||
: suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord,
|
: suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord,
|
||||||
typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle,
|
typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber);
|
||||||
sequenceNumber);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList,
|
public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList,
|
||||||
|
@ -171,6 +171,7 @@ public class SuggestedWords {
|
||||||
return "SuggestedWords:"
|
return "SuggestedWords:"
|
||||||
+ " mTypedWordValid=" + mTypedWordValid
|
+ " mTypedWordValid=" + mTypedWordValid
|
||||||
+ " mWillAutoCorrect=" + mWillAutoCorrect
|
+ " mWillAutoCorrect=" + mWillAutoCorrect
|
||||||
|
+ " mInputStyle=" + mInputStyle
|
||||||
+ " words=" + Arrays.toString(mSuggestedWordInfoList.toArray());
|
+ " words=" + Arrays.toString(mSuggestedWordInfoList.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,8 +378,13 @@ public class SuggestedWords {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isPrediction(final int inputStyle) {
|
||||||
|
return INPUT_STYLE_PREDICTION == inputStyle
|
||||||
|
|| INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION == inputStyle;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isPrediction() {
|
public boolean isPrediction() {
|
||||||
return INPUT_STYLE_PREDICTION == mInputStyle;
|
return isPrediction(mInputStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SuggestedWords is an immutable object, as much as possible. We must not just remove
|
// SuggestedWords is an immutable object, as much as possible. We must not just remove
|
||||||
|
|
|
@ -32,14 +32,18 @@ import java.util.TreeSet;
|
||||||
public final class SuggestionResults extends TreeSet<SuggestedWordInfo> {
|
public final class SuggestionResults extends TreeSet<SuggestedWordInfo> {
|
||||||
public final Locale mLocale;
|
public final Locale mLocale;
|
||||||
public final ArrayList<SuggestedWordInfo> mRawSuggestions;
|
public final ArrayList<SuggestedWordInfo> mRawSuggestions;
|
||||||
|
// TODO: Instead of a boolean , we may want to include the context of this suggestion results,
|
||||||
|
// such as {@link PrevWordsInfo}.
|
||||||
|
public final boolean mIsBeginningOfSentence;
|
||||||
private final int mCapacity;
|
private final int mCapacity;
|
||||||
|
|
||||||
public SuggestionResults(final Locale locale, final int capacity) {
|
public SuggestionResults(final Locale locale, final int capacity,
|
||||||
this(locale, sSuggestedWordInfoComparator, capacity);
|
final boolean isBeginningOfSentence) {
|
||||||
|
this(locale, sSuggestedWordInfoComparator, capacity, isBeginningOfSentence);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator,
|
private SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator,
|
||||||
final int capacity) {
|
final int capacity, final boolean isBeginningOfSentence) {
|
||||||
super(comparator);
|
super(comparator);
|
||||||
mLocale = locale;
|
mLocale = locale;
|
||||||
mCapacity = capacity;
|
mCapacity = capacity;
|
||||||
|
@ -48,6 +52,7 @@ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> {
|
||||||
} else {
|
} else {
|
||||||
mRawSuggestions = null;
|
mRawSuggestions = null;
|
||||||
}
|
}
|
||||||
|
mIsBeginningOfSentence = isBeginningOfSentence;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue