Fix: Typed word is not included in more suggestions.
Happened when top suggestion is long and auto-corrected. Bug: 13738879 Change-Id: I47c2dfb34cfc92b54cfe54c432ee2f646fe454e5
This commit is contained in:
parent
2cc7c3321d
commit
a8c4731eab
1 changed files with 22 additions and 4 deletions
|
@ -74,7 +74,13 @@ public final class MoreSuggestions extends Keyboard {
|
||||||
int rowStartIndex = fromIndex;
|
int rowStartIndex = fromIndex;
|
||||||
final int size = Math.min(suggestedWords.size(), SuggestedWords.MAX_SUGGESTIONS);
|
final int size = Math.min(suggestedWords.size(), SuggestedWords.MAX_SUGGESTIONS);
|
||||||
while (index < size) {
|
while (index < size) {
|
||||||
final String word = suggestedWords.getLabel(index);
|
final String word;
|
||||||
|
if (isIndexSubjectToAutoCorrection(suggestedWords, index)) {
|
||||||
|
// INDEX_OF_AUTO_CORRECTION and INDEX_OF_TYPED_WORD got swapped.
|
||||||
|
word = suggestedWords.getLabel(SuggestedWords.INDEX_OF_TYPED_WORD);
|
||||||
|
} else {
|
||||||
|
word = suggestedWords.getLabel(index);
|
||||||
|
}
|
||||||
// TODO: Should take care of text x-scaling.
|
// TODO: Should take care of text x-scaling.
|
||||||
mWidths[index] = (int)(TypefaceUtils.getStringWidth(word, paint) + padding);
|
mWidths[index] = (int)(TypefaceUtils.getStringWidth(word, paint) + padding);
|
||||||
final int numColumn = index - rowStartIndex + 1;
|
final int numColumn = index - rowStartIndex + 1;
|
||||||
|
@ -172,6 +178,11 @@ public final class MoreSuggestions extends Keyboard {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isIndexSubjectToAutoCorrection(final SuggestedWords suggestedWords,
|
||||||
|
final int index) {
|
||||||
|
return suggestedWords.mWillAutoCorrect && index == SuggestedWords.INDEX_OF_AUTO_CORRECTION;
|
||||||
|
}
|
||||||
|
|
||||||
public static final class Builder extends KeyboardBuilder<MoreSuggestionsParam> {
|
public static final class Builder extends KeyboardBuilder<MoreSuggestionsParam> {
|
||||||
private final MoreSuggestionsView mPaneView;
|
private final MoreSuggestionsView mPaneView;
|
||||||
private SuggestedWords mSuggestedWords;
|
private SuggestedWords mSuggestedWords;
|
||||||
|
@ -189,7 +200,6 @@ public final class MoreSuggestions extends Keyboard {
|
||||||
final int xmlId = R.xml.kbd_suggestions_pane_template;
|
final int xmlId = R.xml.kbd_suggestions_pane_template;
|
||||||
load(xmlId, parentKeyboard.mId);
|
load(xmlId, parentKeyboard.mId);
|
||||||
mParams.mVerticalGap = mParams.mTopPadding = parentKeyboard.mVerticalGap / 2;
|
mParams.mVerticalGap = mParams.mTopPadding = parentKeyboard.mVerticalGap / 2;
|
||||||
|
|
||||||
mPaneView.updateKeyboardGeometry(mParams.mDefaultRowHeight);
|
mPaneView.updateKeyboardGeometry(mParams.mDefaultRowHeight);
|
||||||
final int count = mParams.layout(suggestedWords, fromIndex, maxWidth, minWidth, maxRow,
|
final int count = mParams.layout(suggestedWords, fromIndex, maxWidth, minWidth, maxRow,
|
||||||
mPaneView.newLabelPaint(null /* key */), mResources);
|
mPaneView.newLabelPaint(null /* key */), mResources);
|
||||||
|
@ -206,8 +216,16 @@ public final class MoreSuggestions extends Keyboard {
|
||||||
final int x = params.getX(index);
|
final int x = params.getX(index);
|
||||||
final int y = params.getY(index);
|
final int y = params.getY(index);
|
||||||
final int width = params.getWidth(index);
|
final int width = params.getWidth(index);
|
||||||
final String word = mSuggestedWords.getLabel(index);
|
final String word;
|
||||||
final String info = mSuggestedWords.getDebugString(index);
|
final String info;
|
||||||
|
if (isIndexSubjectToAutoCorrection(mSuggestedWords, index)) {
|
||||||
|
// INDEX_OF_AUTO_CORRECTION and INDEX_OF_TYPED_WORD got swapped.
|
||||||
|
word = mSuggestedWords.getLabel(SuggestedWords.INDEX_OF_TYPED_WORD);
|
||||||
|
info = mSuggestedWords.getDebugString(SuggestedWords.INDEX_OF_TYPED_WORD);
|
||||||
|
} else {
|
||||||
|
word = mSuggestedWords.getLabel(index);
|
||||||
|
info = mSuggestedWords.getDebugString(index);
|
||||||
|
}
|
||||||
final int indexInMoreSuggestions = index + SUGGESTION_CODE_BASE;
|
final int indexInMoreSuggestions = index + SUGGESTION_CODE_BASE;
|
||||||
final Key key = new Key(word, KeyboardIconsSet.ICON_UNDEFINED,
|
final Key key = new Key(word, KeyboardIconsSet.ICON_UNDEFINED,
|
||||||
indexInMoreSuggestions, null /* outputText */, info, 0 /* labelFlags */,
|
indexInMoreSuggestions, null /* outputText */, info, 0 /* labelFlags */,
|
||||||
|
|
Loading…
Reference in a new issue