From 2600ceef6b5b5c6de8800ec9f43674ae8d6276f2 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 18 Apr 2024 10:42:22 +0300 Subject: [PATCH] fixed v30.0 regression: ABC mode allowing selection of only the first letter per key when Next Suggestion hotkey is unset --- .../github/sspanak/tt9/ime/HotkeyHandler.java | 19 +------------------ .../github/sspanak/tt9/ime/TypingHandler.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java index aaf1dc69..b8d8427d 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java @@ -1,8 +1,6 @@ package io.github.sspanak.tt9.ime; import android.view.KeyEvent; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputConnection; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.db.DictionaryLoader; @@ -11,15 +9,11 @@ import io.github.sspanak.tt9.ime.modes.InputMode; import io.github.sspanak.tt9.ime.modes.ModeABC; import io.github.sspanak.tt9.ime.modes.ModePredictive; import io.github.sspanak.tt9.languages.LanguageCollection; -import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.preferences.helpers.Hotkeys; import io.github.sspanak.tt9.ui.UI; import io.github.sspanak.tt9.ui.dialogs.AddWordDialog; public abstract class HotkeyHandler extends TypingHandler { - private boolean isSystemRTL = false; - - @Override protected void onInit() { if (settings.areHotkeysInitialized()) { @@ -28,13 +22,6 @@ public abstract class HotkeyHandler extends TypingHandler { } - @Override - protected boolean onStart(InputConnection connection, EditorInfo field) { - isSystemRTL = LanguageKind.isRTL(LanguageCollection.getDefault(this)); - return super.onStart(connection, field); - } - - @Override public boolean onBack() { return settings.isMainLayoutNumpad(); } @@ -208,11 +195,7 @@ public abstract class HotkeyHandler extends TypingHandler { return true; } - suggestionOps.cancelDelayedAccept(); - backward = isSystemRTL != backward; - suggestionOps.scrollTo(backward ? -1 : 1); - mInputMode.setWordStem(suggestionOps.getCurrent(), true); - appHacks.setComposingTextWithHighlightedStem(suggestionOps.getCurrent(), mInputMode); + scrollSuggestions(backward); return true; } 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 4747dfe3..92b18462 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 @@ -19,6 +19,7 @@ import io.github.sspanak.tt9.ime.modes.InputMode; import io.github.sspanak.tt9.ime.modes.ModePredictive; import io.github.sspanak.tt9.languages.Language; import io.github.sspanak.tt9.languages.LanguageCollection; +import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.ui.UI; import io.github.sspanak.tt9.util.Text; @@ -29,6 +30,7 @@ public abstract class TypingHandler extends KeyPadHandler { @NonNull protected InputType inputType = new InputType(null, null); @NonNull protected TextField textField = new TextField(null, null); protected SuggestionOps suggestionOps; + private boolean isSystemRTL; // input protected ArrayList allowedInputModes = new ArrayList<>(); @@ -62,6 +64,7 @@ public abstract class TypingHandler extends KeyPadHandler { return false; } + isSystemRTL = LanguageKind.isRTL(LanguageCollection.getDefault(this)); resetKeyRepeat(); mInputMode = getInputMode(); determineTextCase(); @@ -156,7 +159,7 @@ public abstract class TypingHandler extends KeyPadHandler { } if (mInputMode.shouldSelectNextSuggestion() && !suggestionOps.isEmpty()) { - onHotkey(settings.getKeyNextSuggestion(), false, false); + scrollSuggestions(false); suggestionOps.scheduleDelayedAccept(mInputMode.getAutoAcceptTimeout()); } else { getSuggestions(); @@ -326,4 +329,13 @@ public abstract class TypingHandler extends KeyPadHandler { forceShowWindowIfHidden(); } + + + protected void scrollSuggestions(boolean backward) { + suggestionOps.cancelDelayedAccept(); + backward = isSystemRTL != backward; + suggestionOps.scrollTo(backward ? -1 : 1); + mInputMode.setWordStem(suggestionOps.getCurrent(), true); + appHacks.setComposingTextWithHighlightedStem(suggestionOps.getCurrent(), mInputMode); + } }