Predictive Mode: fixed the text case seemingly not changing in some cases
This commit is contained in:
parent
6fed5b69d6
commit
55211b9cd9
3 changed files with 21 additions and 6 deletions
|
|
@ -469,13 +469,24 @@ public class TraditionalT9 extends KeyPadHandler {
|
||||||
}
|
}
|
||||||
// when typing a word or viewing scrolling the suggestions, only change the case
|
// when typing a word or viewing scrolling the suggestions, only change the case
|
||||||
else if (!isSuggestionViewHidden()) {
|
else if (!isSuggestionViewHidden()) {
|
||||||
mInputMode.nextTextCase();
|
String currentSuggestionBefore = getComposingText();
|
||||||
setSuggestions(mInputMode.getSuggestions(mLanguage), mSuggestionView.getCurrentIndex());
|
|
||||||
refreshComposingText();
|
// When we are in AUTO mode and the dictionary word is in uppercase,
|
||||||
|
// the mode would switch to UPPERCASE, but visually, the word would not change.
|
||||||
|
// This is why we retry, until there is a visual change.
|
||||||
|
for (int retries = 0; retries < 2; retries ++) {
|
||||||
|
mInputMode.nextTextCase();
|
||||||
|
setSuggestions(mInputMode.getSuggestions(mLanguage), mSuggestionView.getCurrentIndex());
|
||||||
|
refreshComposingText();
|
||||||
|
|
||||||
|
if (!currentSuggestionBefore.equals(getComposingText())) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// make "abc" and "ABC" separate modes from user perspective
|
// make "abc" and "ABC" separate modes from user perspective
|
||||||
else if (mInputMode.isABC() && mInputMode.getTextCase() == InputMode.CASE_LOWER) {
|
else if (mInputMode.isABC() && mInputMode.getTextCase() == InputMode.CASE_LOWER) {
|
||||||
mInputMode.setTextCase(InputMode.CASE_UPPER);
|
mInputMode.nextTextCase();
|
||||||
} else {
|
} else {
|
||||||
int modeIndex = (allowedInputModes.indexOf(mInputMode.getId()) + 1) % allowedInputModes.size();
|
int modeIndex = (allowedInputModes.indexOf(mInputMode.getId()) + 1) % allowedInputModes.size();
|
||||||
mInputMode = InputMode.getInstance(settings, allowedInputModes.get(modeIndex));
|
mInputMode = InputMode.getInstance(settings, allowedInputModes.get(modeIndex));
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,6 @@ abstract public class InputMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void nextTextCase() {
|
public void nextTextCase() {
|
||||||
textFieldTextCase = CASE_UNDEFINED; // since it's a user's choice, the default matters no more
|
|
||||||
|
|
||||||
int nextIndex = (allowedTextCases.indexOf(textCase) + 1) % allowedTextCases.size();
|
int nextIndex = (allowedTextCases.indexOf(textCase) + 1) % allowedTextCases.size();
|
||||||
textCase = allowedTextCases.get(nextIndex);
|
textCase = allowedTextCases.get(nextIndex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -550,6 +550,12 @@ public class ModePredictive extends InputMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nextTextCase() {
|
||||||
|
textFieldTextCase = CASE_UNDEFINED; // since it's a user's choice, the default matters no more
|
||||||
|
super.nextTextCase();
|
||||||
|
}
|
||||||
|
|
||||||
@Override final public boolean isPredictive() { return true; }
|
@Override final public boolean isPredictive() { return true; }
|
||||||
@Override public int getSequenceLength() { return digitSequence.length(); }
|
@Override public int getSequenceLength() { return digitSequence.length(); }
|
||||||
@Override public boolean shouldTrackUpDown() { return true; }
|
@Override public boolean shouldTrackUpDown() { return true; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue