Fix rebuildWebTextView issues

Bug: 5488135

Change-Id: I2df047b6de42dbe716008f69d720fa5fad3fe19d
This commit is contained in:
John Reck
2011-10-21 12:39:43 -07:00
parent da182deded
commit e20bfd9b33
2 changed files with 18 additions and 12 deletions

View File

@@ -1090,6 +1090,7 @@ import junit.framework.Assert;
setMaxLength(maxLength);
setHorizontallyScrolling(single);
setInputType(inputType);
clearComposingText();
setImeOptions(imeOptions);
setVisibility(VISIBLE);
if (!autoComplete) {

View File

@@ -4798,16 +4798,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
@@ -4816,7 +4807,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");
@@ -4827,12 +4817,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();
}
}
public 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
*/
@@ -8433,7 +8438,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: