Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e20bfd9b authored by John Reck's avatar John Reck
Browse files

Fix rebuildWebTextView issues

 Bug: 5488135

Change-Id: I2df047b6de42dbe716008f69d720fa5fad3fe19d
parent da182ded
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1090,6 +1090,7 @@ import junit.framework.Assert;
        setMaxLength(maxLength);
        setHorizontallyScrolling(single);
        setInputType(inputType);
        clearComposingText();
        setImeOptions(imeOptions);
        setVisibility(VISIBLE);
        if (!autoComplete) {
+17 −12
Original line number Diff line number Diff line
@@ -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: