summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2011-10-21 12:39:43 -0700
committer John Reck <jreck@google.com> 2011-10-21 15:31:33 -0700
commitc0e9fb91c8f7ac0e8dd007f00808aae283a79fb0 (patch)
treefac8e7844bd6d346c8ed10ea6e3b8e281c6faf65
parent59cf1dd6aef51c2e19d9ca4e27618a261afbf4c4 (diff)
Fix rebuildWebTextView issues
Bug: 5488135 Cherry pick from MR0 Change-Id: I2df047b6de42dbe716008f69d720fa5fad3fe19d
-rw-r--r--core/java/android/webkit/WebTextView.java1
-rw-r--r--core/java/android/webkit/WebView.java29
2 files changed, 18 insertions, 12 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index ccacd0942662..5ee1b8a66067 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -1090,6 +1090,7 @@ import junit.framework.Assert;
setMaxLength(maxLength);
setHorizontallyScrolling(single);
setInputType(inputType);
+ clearComposingText();
setImeOptions(imeOptions);
setVisibility(VISIBLE);
if (!autoComplete) {
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index a814b128b5ca..3731097c3ad4 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -4804,16 +4804,7 @@ public class WebView extends AbsoluteLayout
mTextGeneration = 0;
}
mWebTextView.updateTextSize();
- Rect visibleRect = new Rect();
- calcOurContentVisibleRect(visibleRect);
- // Note that sendOurVisibleRect calls viewToContent, so the coordinates
- // should be in content coordinates.
- Rect bounds = nativeFocusCandidateNodeBounds();
- Rect vBox = contentToViewRect(bounds);
- mWebTextView.setRect(vBox.left, vBox.top, vBox.width(), vBox.height());
- if (!Rect.intersects(bounds, visibleRect)) {
- revealSelection();
- }
+ updateWebTextViewPosition();
String text = nativeFocusCandidateText();
int nodePointer = nativeFocusCandidatePointer();
// This needs to be called before setType, which may call
@@ -4822,7 +4813,6 @@ public class WebView extends AbsoluteLayout
mWebTextView.setType(nativeFocusCandidateType());
// Gravity needs to be set after setType
mWebTextView.setGravityForRtl(nativeFocusCandidateIsRtlText());
- updateWebTextViewPadding();
if (null == text) {
if (DebugFlags.WEB_VIEW) {
Log.v(LOGTAG, "rebuildWebTextView null == text");
@@ -4833,12 +4823,27 @@ public class WebView extends AbsoluteLayout
InputMethodManager imm = InputMethodManager.peekInstance();
if (imm != null && imm.isActive(mWebTextView)) {
imm.restartInput(mWebTextView);
+ mWebTextView.clearComposingText();
}
if (isFocused()) {
mWebTextView.requestFocus();
}
}
+ private void updateWebTextViewPosition() {
+ Rect visibleRect = new Rect();
+ calcOurContentVisibleRect(visibleRect);
+ // Note that sendOurVisibleRect calls viewToContent, so the coordinates
+ // should be in content coordinates.
+ Rect bounds = nativeFocusCandidateNodeBounds();
+ Rect vBox = contentToViewRect(bounds);
+ mWebTextView.setRect(vBox.left, vBox.top, vBox.width(), vBox.height());
+ if (!Rect.intersects(bounds, visibleRect)) {
+ revealSelection();
+ }
+ updateWebTextViewPadding();
+ }
+
/**
* Update the padding of mWebTextView based on the native textfield/textarea
*/
@@ -8453,7 +8458,7 @@ public class WebView extends AbsoluteLayout
// this is sent after finishing resize in WebViewCore. Make
// sure the text edit box is still on the screen.
if (inEditingMode() && nativeCursorIsTextInput()) {
- rebuildWebTextView();
+ updateWebTextViewPosition();
}
break;
case CLEAR_TEXT_ENTRY: