diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java index af9047f1..9ccba545 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java @@ -141,8 +141,7 @@ abstract public class CommandHandler extends TextEditingHandler { int nextModeIndex = (allowedInputModes.indexOf(mInputMode.getId()) + 1) % allowedInputModes.size(); mInputMode = InputMode.getInstance(settings, mLanguage, inputType, textField, allowedInputModes.get(nextModeIndex)); - mInputMode.setTextFieldCase(inputType.determineTextCase()); - mInputMode.determineNextWordTextCase(textField.getStringBeforeCursor()); + determineTextCase(); } // save the settings for the next time @@ -167,7 +166,9 @@ abstract public class CommandHandler extends TextEditingHandler { if (suggestionOps.isEmpty() || mInputMode.getSuggestions().isEmpty()) { // When there are no suggestions, there is no need to execute the code for // adjusting them below. - mInputMode.nextTextCase(); + if (mInputMode.nextTextCase()) { + settings.saveTextCase(mInputMode.getTextCase()); + } return; } @@ -194,6 +195,8 @@ abstract public class CommandHandler extends TextEditingHandler { suggestionOps.set(mInputMode.getSuggestions(), currentSuggestionIndex, mInputMode.containsGeneratedSuggestions()); textField.setComposingText(suggestionOps.getCurrent()); + + settings.saveTextCase(mInputMode.getTextCase()); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java index 195411fa..1a5f6d3e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java @@ -258,14 +258,10 @@ public abstract class TypingHandler extends KeyPadHandler { /** * determineTextCase - * Restore the last text case or auto-select a new one. If the InputMode supports it, it can change - * the text case based on grammar rules, otherwise we fallback to the input field properties or the - * last saved mode. + * Restore the last used text case or auto-select a new one based on the input field properties. */ - private void determineTextCase() { - mInputMode.defaultTextCase(); + protected void determineTextCase() { mInputMode.setTextFieldCase(inputType.determineTextCase()); - mInputMode.determineNextWordTextCase(textField.getStringBeforeCursor()); InputModeValidator.validateTextCase(mInputMode, settings.getTextCase()); }