summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r--core/java/android/webkit/WebTextView.java8
-rw-r--r--core/java/android/webkit/WebView.java2
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();