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

Commit 778f146c authored by Michael Kolb's avatar Michael Kolb Committed by Android Git Automerger
Browse files

am 5397bb52: am 852585c0: Merge "Draw input field focus ring in WebTextView" into ics-mr1

* commit '5397bb52':
  Draw input field focus ring in WebTextView
parents f0c22dc4 5397bb52
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@
package android.webkit;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
@@ -49,6 +51,7 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsoluteLayout;
import android.widget.AbsoluteLayout.LayoutParams;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@@ -71,6 +74,9 @@ import java.util.ArrayList;

    static final String LOGTAG = "webtextview";

    private Paint mRingPaint;
    private int mRingInset;

    private WebView         mWebView;
    private boolean         mSingle;
    private int             mWidthSpec;
@@ -201,7 +207,13 @@ import java.util.ArrayList;
                }
            }
        };
        float ringWidth = 4f * context.getResources().getDisplayMetrics().density;
        mReceiver = new MyResultReceiver(mHandler);
        mRingPaint = new Paint();
        mRingPaint.setColor(0x6633b5e5);
        mRingPaint.setStrokeWidth(ringWidth);
        mRingPaint.setStyle(Style.FILL);
        mRingInset = (int) ringWidth;
    }

    public void setAutoFillable(int queryId) {
@@ -210,6 +222,40 @@ import java.util.ArrayList;
        mQueryId = queryId;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (isFocused()) {
            final int ib = getHeight() - mRingInset;
            canvas.drawRect(0, 0, getWidth(), mRingInset, mRingPaint);
            canvas.drawRect(0, ib, getWidth(), getHeight(), mRingPaint);
            canvas.drawRect(0, mRingInset, mRingInset, ib, mRingPaint);
            canvas.drawRect(getWidth() - mRingInset, mRingInset, getWidth(), ib, mRingPaint);
        }
    }

    private void growOrShrink(boolean grow) {
        AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) getLayoutParams();
        if (grow) {
            Log.i("webtextview", "grow");
            lp.x -= mRingInset;
            lp.y -= mRingInset;
            lp.width += 2 * mRingInset;
            lp.height += 2 * mRingInset;
            setPadding(getPaddingLeft() + mRingInset, getPaddingTop() + mRingInset,
                    getPaddingRight() + mRingInset, getPaddingBottom() + mRingInset);
        } else {
            Log.i("webtextview", "shrink");
            lp.x += mRingInset;
            lp.y += mRingInset;
            lp.width -= 2 * mRingInset;
            lp.height -= 2 * mRingInset;
            setPadding(getPaddingLeft() - mRingInset, getPaddingTop() - mRingInset,
                    getPaddingRight() - mRingInset, getPaddingBottom() - mRingInset);
        }
        setLayoutParams(lp);
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.isSystem()) {
@@ -511,6 +557,7 @@ import java.util.ArrayList;
        } else if (!mInsideRemove) {
            mWebView.setActive(false);
        }
        growOrShrink(focused);
        mFromFocusChange = false;
    }

+4 −4
Original line number Diff line number Diff line
@@ -5670,13 +5670,13 @@ public class WebView extends AbsoluteLayout
            if (hasFocus()) {
                // If our window regained focus, and we have focus, then begin
                // drawing the cursor ring
                mDrawCursorRing = true;
                mDrawCursorRing = !inEditingMode();
                setFocusControllerActive(true);
            } else {
                mDrawCursorRing = false;
                if (!inEditingMode()) {
                    // If our window gained focus, but we do not have it, do not
                    // draw the cursor ring.
                    mDrawCursorRing = false;
                    setFocusControllerActive(false);
                }
                // We do not call recordButtons here because we assume
@@ -5751,7 +5751,7 @@ public class WebView extends AbsoluteLayout
            // When we regain focus, if we have window focus, resume drawing
            // the cursor ring
            if (hasWindowFocus()) {
                mDrawCursorRing = true;
                mDrawCursorRing = !inEditingMode();
                setFocusControllerActive(true);
            //} else {
                // The WebView has gained focus while we do not have
@@ -5761,8 +5761,8 @@ public class WebView extends AbsoluteLayout
        } else {
            // When we lost focus, unless focus went to the TextView (which is
            // true if we are in editing mode), stop drawing the cursor ring.
            if (!inEditingMode()) {
            mDrawCursorRing = false;
            if (!inEditingMode()) {
                setFocusControllerActive(false);
            }
            mKeysPressed.clear();