diff --git a/platform/android/java/lib/src/main/java/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/lib/src/main/java/org/godotengine/godot/input/GodotEditText.java index 21d0e2c388..58cb40140c 100644 --- a/platform/android/java/lib/src/main/java/org/godotengine/godot/input/GodotEditText.java +++ b/platform/android/java/lib/src/main/java/org/godotengine/godot/input/GodotEditText.java @@ -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 {