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.