Loading core/java/android/webkit/WebTextView.java +47 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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()) { Loading Loading @@ -511,6 +557,7 @@ import java.util.ArrayList; } else if (!mInsideRemove) { mWebView.setActive(false); } growOrShrink(focused); mFromFocusChange = false; } Loading core/java/android/webkit/WebView.java +4 −4 Original line number Diff line number Diff line Loading @@ -5679,13 +5679,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 Loading Loading @@ -5760,7 +5760,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 Loading @@ -5770,8 +5770,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(); Loading Loading
core/java/android/webkit/WebTextView.java +47 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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()) { Loading Loading @@ -511,6 +557,7 @@ import java.util.ArrayList; } else if (!mInsideRemove) { mWebView.setActive(false); } growOrShrink(focused); mFromFocusChange = false; } Loading
core/java/android/webkit/WebView.java +4 −4 Original line number Diff line number Diff line Loading @@ -5679,13 +5679,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 Loading Loading @@ -5760,7 +5760,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 Loading @@ -5770,8 +5770,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(); Loading