Переглянути джерело

Merge pull request #37025 from nekomatata/lineedit-text-entered-android

Fix text_entered signal when max_length is used in LineEdit on Android
Rémi Verschelde 5 роки тому
батько
коміт
51772e75eb

+ 13 - 3
platform/android/java/lib/src/org/godotengine/godot/input/GodotTextInputWrapper.java

@@ -110,8 +110,13 @@ public class GodotTextInputWrapper implements TextWatcher, OnEditorActionListene
 			@Override
 			public void run() {
 				for (int i = 0; i < count; ++i) {
-					GodotLib.key(0, 0, newChars[i], true);
-					GodotLib.key(0, 0, newChars[i], false);
+					int key = newChars[i];
+					if (key == '\n') {
+						// Return keys are handled through action events
+						continue;
+					}
+					GodotLib.key(0, 0, key, true);
+					GodotLib.key(0, 0, key, false);
 				}
 			}
 		});
@@ -134,8 +139,13 @@ public class GodotTextInputWrapper implements TextWatcher, OnEditorActionListene
 			});
 		}
 
-		if (pActionID == EditorInfo.IME_ACTION_DONE) {
+		if (pActionID == EditorInfo.IME_NULL) {
+			// Enter key has been pressed
+			GodotLib.key(KeyEvent.KEYCODE_ENTER, KeyEvent.KEYCODE_ENTER, 0, true);
+			GodotLib.key(KeyEvent.KEYCODE_ENTER, KeyEvent.KEYCODE_ENTER, 0, false);
+
 			this.mView.requestFocus();
+			return true;
 		}
 		return false;
 	}