From f594a6f2585df00074885be939339e903f9c27f1 Mon Sep 17 00:00:00 2001 From: sspanak Date: Tue, 22 Apr 2025 18:05:13 +0300 Subject: [PATCH] fixed fast-delete deleting too much text in languages without spaces, when there is composing text --- .../java/io/github/sspanak/tt9/ime/TypingHandler.java | 9 ++++++--- .../io/github/sspanak/tt9/ime/helpers/TextField.java | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-) 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 a354237c..584bdcf8 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 @@ -245,12 +245,15 @@ public abstract class TypingHandler extends KeyPadHandler { private void deleteText(boolean deleteMany) { int charsToDelete = 1; - if (deleteMany) { - charsToDelete = Math.max(textField.getPaddedWordBeforeCursorLength(), 1); - } else if (!textSelection.isEmpty()) { + + if (!textSelection.isEmpty()) { charsToDelete = textSelection.length(); textSelection.clear(false); + } else if (deleteMany) { + charsToDelete = textField.getComposingText().length(); + charsToDelete = charsToDelete > 0 ? charsToDelete : Math.max(textField.getPaddedWordBeforeCursorLength(), 1); } + textField.deleteChars(charsToDelete); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextField.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextField.java index 84c71c84..041dd9b2 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextField.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextField.java @@ -20,7 +20,7 @@ import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Text; public class TextField extends InputField { - private CharSequence composingText = ""; + @NonNull private CharSequence composingText = ""; private final boolean isComposingSupported; private final boolean isNonText; @@ -231,6 +231,12 @@ public class TextField extends InputField { } + @NonNull + public String getComposingText() { + return composingText.toString(); + } + + /** * setComposingText * A fail-safe setter for composing text, which ignores NULL input.