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);