From af6ee5114f0822d7dd5417f28f009eeadc05043b Mon Sep 17 00:00:00 2001 From: sspanak Date: Wed, 3 Apr 2024 19:14:47 +0300 Subject: [PATCH] fixed unnecessary restarts, causing AppHacks to contain an invalid TextField, effectively making typing in Termux impossible --- .../java/io/github/sspanak/tt9/ime/TraditionalT9.java | 9 ++++++++- .../java/io/github/sspanak/tt9/ime/TypingHandler.java | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java index 20a62394..9cee8fe1 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java @@ -82,6 +82,10 @@ public class TraditionalT9 extends HotkeyHandler { setStatusText(mInputMode.toString()); setDarkTheme(); mainView.render(); + + if (!isInputViewShown()) { + updateInputViewShown(); + } } @@ -100,7 +104,6 @@ public class TraditionalT9 extends HotkeyHandler { initUi(); } - updateInputViewShown(); return true; } @@ -121,6 +124,10 @@ public class TraditionalT9 extends HotkeyHandler { setStatusIcon(0); setStatusText("--"); + if (isInputViewShown()) { + updateInputViewShown(); + } + normalizationHandler.removeCallbacksAndMessages(null); normalizationHandler.postDelayed( () -> { if (!DictionaryLoader.getInstance(this).isRunning()) WordStoreAsync.normalizeNext(); }, 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 7c368549..6400cf69 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 @@ -65,8 +65,6 @@ public abstract class TypingHandler extends KeyPadHandler { suggestionOps.set(null); - appHacks = new AppHacks(settings, connection, field, textField); - return true; } @@ -75,6 +73,9 @@ public abstract class TypingHandler extends KeyPadHandler { currentInputConnection = connection; inputType = new InputType(currentInputConnection, field); textField = new TextField(currentInputConnection, field); + + // changing the TextField and notifying all interested classes is an atomic operation + appHacks = new AppHacks(settings, connection, field, textField); suggestionOps.setTextField(textField); }