From 209f457ea4eed6a2a3816f42049a17101c049d9c Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 1 Jul 2022 10:13:19 -0700
Subject: [PATCH] Generate backspaces for the text we're going to replace when
committing text
---
.../main/java/org/libsdl/app/SDLActivity.java | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
index 8ad4f173faa..3f0752f164d 100644
--- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
+++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
@@ -2356,6 +2356,29 @@ public boolean sendKeyEvent(KeyEvent event) {
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
+ /* Generate backspaces for the text we're going to replace */
+ final Editable content = getEditable();
+ if (content != null) {
+ int a = getComposingSpanStart(content);
+ int b = getComposingSpanEnd(content);
+ if (a == -1 || b == -1) {
+ a = Selection.getSelectionStart(content);
+ b = Selection.getSelectionEnd(content);
+ }
+ if (a < 0) a = 0;
+ if (b < 0) b = 0;
+ if (b < a) {
+ int tmp = a;
+ a = b;
+ b = tmp;
+ }
+ int backspaces = (b - a);
+
+ for (int i = 0; i < backspaces; i++) {
+ nativeGenerateScancodeForUnichar('\b');
+ }
+ }
+
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c == '\n') {