diff options
| author | 2010-08-27 14:44:37 -0400 | |
|---|---|---|
| committer | 2010-08-27 14:44:37 -0400 | |
| commit | 3d540842f70f9719ff5abbac3bd492e7949d4aab (patch) | |
| tree | acd54e680031804357c980136b6e3152b148470c | |
| parent | 8deae99ba17afcdd3a945481223524541903ed67 (diff) | |
Send delete key events when pressed at beginning of field.
Bug: 2952504
Change-Id: Iafb33a29a3b9e51c5db16e7a123fe91f73480643
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index 48c065af68fc..990f891c6eca 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -153,11 +153,13 @@ import java.util.ArrayList; return true; } Spannable text = (Spannable) getText(); - int oldLength = text.length(); + int oldStart = Selection.getSelectionStart(text); + int oldEnd = Selection.getSelectionEnd(text); // Normally the delete key's dom events are sent via onTextChanged. - // However, if the length is zero, the text did not change, so we - // go ahead and pass the key down immediately. - if (KeyEvent.KEYCODE_DEL == keyCode && 0 == oldLength) { + // However, if the cursor is at the beginning of the field, which + // includes the case where it has zero length, then the text is not + // changed, so send the events immediately. + if (KeyEvent.KEYCODE_DEL == keyCode && oldStart == 0 && oldEnd == 0) { sendDomEvent(event); return true; } @@ -197,9 +199,8 @@ import java.util.ArrayList; if (getLayout() == null) { measure(mWidthSpec, mHeightSpec); } - int oldStart = Selection.getSelectionStart(text); - int oldEnd = Selection.getSelectionEnd(text); + int oldLength = text.length(); boolean maxedOut = mMaxLength != -1 && oldLength == mMaxLength; // If we are at max length, and there is a selection rather than a // cursor, we need to store the text to compare later, since the key |