Merge pull request #119798 from Voyend/android-soft-keyboard-backspace-fix

Fix backspace being unable to delete pre-existing text in any input field when using a soft keyboard on Android.
This commit is contained in:
Thaddeus Crews
2026-06-18 10:19:00 -05:00
@@ -239,6 +239,14 @@ public class GodotEditText extends EditText {
return mRenderView.getInputHandler().onKeyDown(keyCode, keyEvent);
}
// If EditText is empty, super.onKeyDown won't modify the Editable,
// so beforeTextChanged won't fire and Godot never receives the DEL event.
// Forward it directly in that case.
if (keyCode == KeyEvent.KEYCODE_DEL && length() == 0) {
mRenderView.getInputHandler().handleKeyEvent(KeyEvent.KEYCODE_DEL, 0, 0, true, false);
return true;
}
// pass event to godot in special cases
if (needHandlingInGodot(keyCode, keyEvent) && mRenderView.getInputHandler().onKeyDown(keyCode, keyEvent)) {
return true;
@@ -261,6 +269,12 @@ public class GodotEditText extends EditText {
return mRenderView.getInputHandler().onKeyUp(keyCode, keyEvent);
}
// Paired release event for the KEYCODE_DEL press forwarded in onKeyDown.
if (keyCode == KeyEvent.KEYCODE_DEL && length() == 0) {
mRenderView.getInputHandler().handleKeyEvent(KeyEvent.KEYCODE_DEL, 0, 0, false, false);
return true;
}
if (needHandlingInGodot(keyCode, keyEvent) && mRenderView.getInputHandler().onKeyUp(keyCode, keyEvent)) {
return true;
} else {