diff --git a/src/io/github/sspanak/tt9/ime/helpers/InputType.java b/src/io/github/sspanak/tt9/ime/helpers/InputType.java index 08ed2b95..e8227c86 100644 --- a/src/io/github/sspanak/tt9/ime/helpers/InputType.java +++ b/src/io/github/sspanak/tt9/ime/helpers/InputType.java @@ -33,17 +33,18 @@ public class InputType { /** - * isDialer - * Dialer fields seem to take care of numbers and backspace on their own, + * isSpecialNumeric + * Calculator and Dialer fields seem to take care of numbers and backspace on their own, * so we need to be aware of them. * * NOTE: A Dialer field is not the same as Phone field. Dialer is where you * actually dial and call a phone number. While the Phone field is a text * field in any app or a webpage, intended for typing phone numbers. * - * More info: in this Github issue. + * More info: in this Github issue + * and the PR about calculators. */ - public boolean isDialer() { + public boolean isSpecialNumeric() { if (field == null) { return false; } @@ -51,7 +52,8 @@ public class InputType { int inputType = field.inputType & android.text.InputType.TYPE_MASK_CLASS; return - inputType == android.text.InputType.TYPE_CLASS_PHONE && field.packageName.equals("com.android.dialer"); + inputType == android.text.InputType.TYPE_CLASS_PHONE && field.packageName.equals("com.android.dialer") + || inputType == android.text.InputType.TYPE_CLASS_NUMBER && field.packageName.contains("com.android.calculator"); } diff --git a/src/io/github/sspanak/tt9/ime/helpers/TextField.java b/src/io/github/sspanak/tt9/ime/helpers/TextField.java index b80145d5..2d2ab23e 100644 --- a/src/io/github/sspanak/tt9/ime/helpers/TextField.java +++ b/src/io/github/sspanak/tt9/ime/helpers/TextField.java @@ -90,9 +90,10 @@ public class TextField { return allowedModes; } - // Dialer field, not to be confused with Phone text field. - // It only accepts 0-9, "#" and "*". - if (inputType.isDialer()) { + // Calculators (support only 0-9 and math) and Dialer (0-9, "#" and "*"), + // handle all input themselves, so we are supposed to pass through all key presses. + // Note: A Dialer field is not a Phone number field. + if (inputType.isSpecialNumeric()) { allowedModes.add(InputMode.MODE_PASSTHROUGH); return allowedModes; } diff --git a/src/io/github/sspanak/tt9/ime/modes/ModePassthrough.java b/src/io/github/sspanak/tt9/ime/modes/ModePassthrough.java index 29cdbd79..b70f61e7 100644 --- a/src/io/github/sspanak/tt9/ime/modes/ModePassthrough.java +++ b/src/io/github/sspanak/tt9/ime/modes/ModePassthrough.java @@ -2,7 +2,7 @@ package io.github.sspanak.tt9.ime.modes; import androidx.annotation.NonNull; -// see: InputType.isDialer() +// see: InputType.isSpecialNumeric() public class ModePassthrough extends InputMode { ModePassthrough() { reset();