From d9c899f7874de739fe8b3b89ce4f721999e606f4 Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 30 Aug 2024 12:57:10 +0300 Subject: [PATCH] fixed incorrect behavior of the virtual Clear Filter key when using the suggestion to be filtered was selected with a hardware key --- .../io/github/sspanak/tt9/ime/AbstractHandler.java | 3 ++- .../sspanak/tt9/ui/main/keys/SoftFilterKey.java | 1 + .../io/github/sspanak/tt9/ui/main/keys/SoftKey.java | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/AbstractHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/AbstractHandler.java index 2cb097c7..efd0e826 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/AbstractHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/AbstractHandler.java @@ -17,6 +17,7 @@ abstract public class AbstractHandler extends InputMethodService { abstract public boolean onOK(); abstract public boolean onText(String text, boolean validateOnly); // used for "#", "*" and whatnot + // lifecycle abstract protected void onInit(); abstract protected boolean onStart(InputConnection inputConnection, EditorInfo inputField); abstract protected void onFinishTyping(); @@ -27,7 +28,7 @@ abstract public class AbstractHandler extends InputMethodService { abstract protected void createSuggestionBar(); abstract protected void resetStatus(); - + // informational abstract protected InputMode getInputMode(); abstract protected int getInputModeId(); abstract protected SuggestionOps getSuggestionOps(); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftFilterKey.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftFilterKey.java index 62d99dd1..ecaa0827 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftFilterKey.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftFilterKey.java @@ -21,6 +21,7 @@ public class SoftFilterKey extends SoftKey { preventRepeat(); if (validateTT9Handler() && tt9.onKeyFilterClear(false)) { vibrate(Vibration.getHoldVibration()); + ignoreLastPressedKey(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java index 2c7f3af1..0eba6b13 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java @@ -36,7 +36,9 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement private boolean repeat = false; private long lastLongClickTime = 0; private final Handler repeatHandler = new Handler(Looper.getMainLooper()); + private static int lastPressedKey = -1; + private boolean ignoreLastPressedKey = false; public SoftKey(Context context) { @@ -88,7 +90,7 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement if (!repeat || hold) { hold = false; boolean result = handleRelease(); - lastPressedKey = getId(); + lastPressedKey = ignoreLastPressedKey ? -1 : getId(); return result; } repeat = false; @@ -120,7 +122,7 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement if (hold) { repeat = true; handleHold(); - lastPressedKey = getId(); + lastPressedKey = ignoreLastPressedKey ? -1 : getId(); repeatHandler.removeCallbacks(this::repeatOnLongPress); repeatHandler.postDelayed(this::repeatOnLongPress, getLongPressRepeatDelay()); } @@ -151,6 +153,11 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement } + protected void ignoreLastPressedKey() { + ignoreLastPressedKey = true; + } + + protected boolean handlePress() { if (validateTT9Handler()) { vibrate(Vibration.getPressVibration(this));