Merge "Draw input field focus ring in WebTextView" into ics-mr1
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
mDrawCursorRing = false;
|
||||
if (!inEditingMode()) {
|
||||
mDrawCursorRing = false;
|
||||
setFocusControllerActive(false);
|
||||
}
|
||||
mKeysPressed.clear();
|
||||
|
||||
Reference in New Issue
Block a user