diff options
author | Yorke Lee <yorkelee@google.com> | 2015-10-23 18:12:51 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2015-10-26 12:05:34 -0700 |
commit | 135e465360dc36f1b9602660e290825d1e1fd00e (patch) | |
tree | 0e3102927a2d60bdb7b036f31877dcc820401747 /src/com/android/dialer/dialpad/DialpadFragment.java | |
parent | b18995d09ec3336b71bcf75e8a275fbba40dcfa7 (diff) |
Fix issue with entering '+' with switch access
Distinguish between a manual long press and system long
press (via accessibility) when modifying the current
dial string.
Bug: 23554996
Change-Id: I3fc610c8e24bdb39729b827715e08a3e7d73ba1f
Diffstat (limited to 'src/com/android/dialer/dialpad/DialpadFragment.java')
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index 9c77f30c5..517711016 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -414,6 +414,7 @@ public class DialpadFragment extends Fragment return mDigits != null; } + @VisibleForTesting public EditText getDigitsWidget() { return mDigits; } @@ -970,7 +971,7 @@ public class DialpadFragment extends Fragment // Just for safety we also check if the digits field is empty or not. if (isDigitsEmpty() || TextUtils.equals(mDigits.getText(), "1")) { // We'll try to initiate voicemail and thus we want to remove irrelevant string. - removePreviousDigitIfPossible(); + removePreviousDigitIfPossible('1'); List<PhoneAccountHandle> subscriptionAccountHandles = PhoneAccountUtils.getSubscriptionPhoneAccounts(getActivity()); @@ -1007,8 +1008,13 @@ public class DialpadFragment extends Fragment return false; } case R.id.zero: { - // Remove tentative input ('0') done by onTouch(). - removePreviousDigitIfPossible(); + if (mPressedDialpadKeys.contains(view)) { + // If the zero key is currently pressed, then the long press occurred by touch + // (and not via other means like certain accessibility input methods). + // Remove the '0' that was input when the key was first pressed. + removePreviousDigitIfPossible('0'); + } + keyPressed(KeyEvent.KEYCODE_PLUS); // Stop tone immediately @@ -1029,12 +1035,16 @@ public class DialpadFragment extends Fragment } /** - * Remove the digit just before the current position. This can be used if we want to replace - * the previous digit or cancel previously entered character. + * Remove the digit just before the current position of the cursor, iff the following conditions + * are true: + * 1) The cursor is not positioned at index 0. + * 2) The digit before the current cursor position matches the current digit. + * + * @param digit to remove from the digits view. */ - private void removePreviousDigitIfPossible() { + private void removePreviousDigitIfPossible(char digit) { final int currentPosition = mDigits.getSelectionStart(); - if (currentPosition > 0) { + if (currentPosition > 0 && digit == mDigits.getText().charAt(currentPosition - 1)) { mDigits.setSelection(currentPosition); mDigits.getText().delete(currentPosition - 1, currentPosition); } |