diff --git a/src/io/github/sspanak/tt9/ime/helpers/InputType.java b/src/io/github/sspanak/tt9/ime/helpers/InputType.java
index d2e0d8787..e8227c86a 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 boolean isLimited() {
/**
- * 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 boolean isDialer() {
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_NUMBER && field.packageName.contains("com.android.calculator");
+ 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 b80145d5b..2d2ab23ec 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 ArrayList determineInputModes(InputType inputType) {
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 29cdbd798..b70f61e74 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 @@
import androidx.annotation.NonNull;
-// see: InputType.isDialer()
+// see: InputType.isSpecialNumeric()
public class ModePassthrough extends InputMode {
ModePassthrough() {
reset();