From 7fb509604e0f9752c837316a0500c057140920f9 Mon Sep 17 00:00:00 2001 From: sspanak Date: Mon, 30 Sep 2024 13:36:03 +0300 Subject: [PATCH] fixed Backspace not deleting selected text --- .../java/io/github/sspanak/tt9/ime/TypingHandler.java | 11 ++++++++++- .../io/github/sspanak/tt9/ime/helpers/TextField.java | 2 +- .../github/sspanak/tt9/ime/helpers/TextSelection.java | 5 +++++ 3 files changed, 16 insertions(+), 2 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 02fb57e5..98f31bc3 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 @@ -135,7 +135,16 @@ public abstract class TypingHandler extends KeyPadHandler { suggestionOps.commitCurrent(false); mInputMode.reset(); - int charsToDelete = settings.getBackspaceAcceleration() && repeat > 0 ? Math.max(textField.getPaddedWordBeforeCursorLength(), 1) : 1; + int charsToDelete; + + if (settings.getBackspaceAcceleration() && repeat > 0) { + charsToDelete = Math.max(textField.getPaddedWordBeforeCursorLength(), 1); + } else if (!textSelection.isEmpty()) { + charsToDelete = textSelection.length(); + textSelection.clear(false); + } else { + charsToDelete = 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 f642e218..9700cbc2 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 @@ -177,7 +177,7 @@ public class TextField extends InputField { * "deleteSurroundingText()" to delete a region of text or a Unicode character. */ public void deleteChars(int numberOfChars) { - if (numberOfChars < 0 || connection == null) { + if (numberOfChars <= 0 || connection == null) { return; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextSelection.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextSelection.java index 448a3666..a7c4b59a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextSelection.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/TextSelection.java @@ -52,6 +52,11 @@ public class TextSelection { } + public int length() { + return Math.abs(currentEnd - currentStart); + } + + public void selectAll() { if (connection != null) { connection.performContextMenuAction(android.R.id.selectAll);