diff options
| author | 2011-10-21 12:39:43 -0700 | |
|---|---|---|
| committer | 2011-10-21 15:31:33 -0700 | |
| commit | c0e9fb91c8f7ac0e8dd007f00808aae283a79fb0 (patch) | |
| tree | fac8e7844bd6d346c8ed10ea6e3b8e281c6faf65 | |
| parent | 59cf1dd6aef51c2e19d9ca4e27618a261afbf4c4 (diff) | |
Fix rebuildWebTextView issues
Bug: 5488135
Cherry pick from MR0
Change-Id: I2df047b6de42dbe716008f69d720fa5fad3fe19d
| -rw-r--r-- | core/java/android/webkit/WebTextView.java | 1 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 29 |
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: |