diff options
Diffstat (limited to 'core/java/android/webkit')
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 8 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index 0e5e8b5..db117f7 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -88,6 +88,7 @@ import java.util.ArrayList; // happens, the next time the user hits a key it is okay for the focus // pointer to not match the WebTextView's node pointer boolean mOkayForFocusNotToMatch; + boolean mResendKeyDown; // Whether or not a selection change was generated from webkit. If it was, // we do not need to pass the selection back to webkit. private boolean mFromWebKit; @@ -136,10 +137,9 @@ import java.util.ArrayList; isArrowKey = true; break; } - if (!isArrowKey && !mOkayForFocusNotToMatch + if (!isArrowKey && !mOkayForFocusNotToMatch && !mResendKeyDown && mWebView.nativeFocusNodePointer() != mNodePointer) { - if (mWebView.nativeCursorNodePointer() == mNodePointer) { - // remove cursor so character doesn't go back to this view + if (mWebView.nativeFocusNodePointer() != 0) { mWebView.nativeClearCursor(); } // Do not call remove() here, which hides the soft keyboard. If @@ -152,7 +152,7 @@ import java.util.ArrayList; // After a jump to next textfield and the first key press, the cursor // and focus will once again match, so reset this value. mOkayForFocusNotToMatch = false; - + mResendKeyDown = false; Spannable text = (Spannable) getText(); int oldLength = text.length(); // Normally the delete key's dom events are sent via onTextChanged. diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 6510146..a9083d8 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3380,6 +3380,7 @@ public class WebView extends AbsoluteLayout rebuildWebTextView(); // Now we need to pass the event to it if (inEditingMode()) { + mWebTextView.mResendKeyDown = true; return mWebTextView.onKeyDown(keyCode, event); } } else if (nativeHasFocusNode()) { @@ -4950,6 +4951,7 @@ public class WebView extends AbsoluteLayout int select = nativeFocusCandidateIsTextField() ? nativeFocusCandidateMaxLength() : 0; setSelection(select, select); + mWebTextView.mOkayForFocusNotToMatch = false; // only once } } WebViewCore.JSKeyData arg = new WebViewCore.JSKeyData(); |
