From e1b7496733bc708e785bd420ce5b9b6dcfa1166d Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 5 Apr 2024 18:46:24 +0300 Subject: [PATCH] composing text is now hidden for numeric fields, for better compatibility --- .../sspanak/tt9/ime/helpers/TextField.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) 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 a584356b..c001b7fa 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 @@ -25,10 +25,16 @@ public class TextField { private final InputConnection connection; private final EditorInfo field; + private final boolean isComposingSupported; + private CharSequence composingText = ""; + public TextField(InputConnection inputConnection, EditorInfo inputField) { connection = inputConnection; field = inputField; + + InputType inputType = new InputType(inputConnection, inputField); + isComposingSupported = !inputType.isNumeric() && !inputType.isLimited(); } @@ -164,7 +170,8 @@ public class TextField { * A fail-safe setter for composing text, which ignores NULL input. */ public void setComposingText(CharSequence text, int position) { - if (text != null && connection != null) { + composingText = text; + if (text != null && connection != null && isComposingSupported) { connection.setComposingText(text, position); } } @@ -194,8 +201,14 @@ public class TextField { * Finish composing text or do nothing if the text field is invalid. */ public void finishComposingText() { - if (connection != null) { + if (connection == null) { + return; + } + + if (isComposingSupported) { connection.finishComposingText(); + } else { + connection.commitText(composingText, 1); } }