am 0c5924e9: preserve webkit-side text selection
Merge commit '0c5924e9dd1befadae8c73505d3acc9813bf8224' into eclair-plus-aosp * commit '0c5924e9dd1befadae8c73505d3acc9813bf8224': preserve webkit-side text selection
This commit is contained in:
@@ -87,11 +87,12 @@ import java.util.ArrayList;
|
||||
// Gets set to true when the the IME jumps to the next textfield. When this
|
||||
// happens, the next time the user hits a key it is okay for the focus
|
||||
// pointer to not match the WebTextView's node pointer
|
||||
private boolean mOkayForFocusNotToMatch;
|
||||
boolean mOkayForFocusNotToMatch;
|
||||
// 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;
|
||||
private boolean mGotTouchDown;
|
||||
private boolean mInSetTextAndKeepSelection;
|
||||
// Array to store the final character added in onTextChanged, so that its
|
||||
// KeyEvents may be determined.
|
||||
private char[] mCharacter = new char[1];
|
||||
@@ -395,7 +396,9 @@ import java.util.ArrayList;
|
||||
Log.v(LOGTAG, "onTextChanged start=" + start
|
||||
+ " start + before=" + (start + before));
|
||||
}
|
||||
mWebView.setSelection(start, start + before);
|
||||
if (!mInSetTextAndKeepSelection) {
|
||||
mWebView.setSelection(start, start + before);
|
||||
}
|
||||
}
|
||||
if (!cannotUseKeyEvents) {
|
||||
int length = events.length;
|
||||
@@ -791,7 +794,9 @@ import java.util.ArrayList;
|
||||
/* package */ void setTextAndKeepSelection(String text) {
|
||||
mPreChange = text.toString();
|
||||
Editable edit = (Editable) getText();
|
||||
mInSetTextAndKeepSelection = true;
|
||||
edit.replace(0, edit.length(), text);
|
||||
mInSetTextAndKeepSelection = false;
|
||||
updateCachedTextfield();
|
||||
}
|
||||
|
||||
|
||||
@@ -4804,9 +4804,11 @@ public class WebView extends AbsoluteLayout
|
||||
/* package */ void passToJavaScript(String currentText, KeyEvent event) {
|
||||
if (nativeCursorWantsKeyEvents() && !nativeCursorMatchesFocus()) {
|
||||
mWebViewCore.sendMessage(EventHub.CLICK);
|
||||
int select = nativeFocusCandidateIsTextField() ?
|
||||
nativeFocusCandidateMaxLength() : 0;
|
||||
setSelection(select, select);
|
||||
if (mWebTextView.mOkayForFocusNotToMatch) {
|
||||
int select = nativeFocusCandidateIsTextField() ?
|
||||
nativeFocusCandidateMaxLength() : 0;
|
||||
setSelection(select, select);
|
||||
}
|
||||
}
|
||||
WebViewCore.JSKeyData arg = new WebViewCore.JSKeyData();
|
||||
arg.mEvent = event;
|
||||
|
||||
Reference in New Issue
Block a user