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 990cfa79..e62eb4ba 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 @@ -21,6 +21,7 @@ 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.ui.UI; +import io.github.sspanak.tt9.util.SystemSettings; import io.github.sspanak.tt9.util.Text; public abstract class TypingHandler extends KeyPadHandler { @@ -30,6 +31,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; + boolean isEnabled = false; // input protected ArrayList allowedInputModes = new ArrayList<>(); @@ -47,11 +49,19 @@ public abstract class TypingHandler extends KeyPadHandler { protected boolean shouldBeOff() { - return currentInputConnection == null || mInputMode.isPassthrough(); + return !isEnabled || currentInputConnection == null || mInputMode.isPassthrough(); + } + + @Override + protected void onInit() { + super.onInit(); + isEnabled = SystemSettings.isTT9Enabled(this); } @Override protected boolean onStart(InputConnection connection, EditorInfo field) { + isEnabled = SystemSettings.isTT9Enabled(this); + boolean restart = textField.equals(connection, field); setInputField(connection, field); diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java index 3148e6d4..7a00f1a0 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java @@ -78,7 +78,7 @@ abstract class UiHandler extends AbstractHandler { * on how much time the restart takes, this may erase the current user input. */ protected void forceShowWindow() { - if (isInputViewShown() || !shouldBeVisible()) { + if (isInputViewShown() || !shouldBeVisible() || shouldBeOff()) { return; } diff --git a/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java b/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java index 763d3ae6..fb151efe 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/SystemSettings.java @@ -1,6 +1,5 @@ package io.github.sspanak.tt9.util; -import android.app.Activity; import android.content.Context; import android.os.Build; import android.os.LocaleList; @@ -14,7 +13,7 @@ public class SystemSettings { private static InputMethodManager inputManager; private static String packageName; - public static boolean isTT9Enabled(Activity context) { + public static boolean isTT9Enabled(Context context) { inputManager = inputManager == null ? (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE) : inputManager; packageName = packageName == null ? context.getPackageName() : packageName;