summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java5
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java24
2 files changed, 21 insertions, 8 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 0893b1c56..140437e40 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -16,6 +16,8 @@
package com.android.dialer;
+import com.google.common.annotations.VisibleForTesting;
+
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
@@ -128,7 +130,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
private static final String KEY_FIRST_LAUNCH = "first_launch";
private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown";
- private static final String TAG_DIALPAD_FRAGMENT = "dialpad";
+ @VisibleForTesting
+ public static final String TAG_DIALPAD_FRAGMENT = "dialpad";
private static final String TAG_REGULAR_SEARCH_FRAGMENT = "search";
private static final String TAG_SMARTDIAL_SEARCH_FRAGMENT = "smartdial";
private static final String TAG_FAVORITES_FRAGMENT = "favorites";
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);
}