| Index: content/public/android/java/src/org/chromium/content/browser/input/HandleViewResources.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/HandleViewResources.java b/content/public/android/java/src/org/chromium/content/browser/input/HandleViewResources.java
|
| index 841a7081d434cd7e43f15b6ee46bd613b2a1b6c7..39dbf46776d30e887ed0bcd091a8af153dfc76a1 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/input/HandleViewResources.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/HandleViewResources.java
|
| @@ -11,6 +11,7 @@ import android.graphics.Bitmap;
|
| import android.graphics.BitmapFactory;
|
| import android.graphics.Canvas;
|
| import android.graphics.drawable.Drawable;
|
| +import android.graphics.drawable.LayerDrawable;
|
|
|
| import org.chromium.base.CalledByNative;
|
| import org.chromium.base.JNINamespace;
|
| @@ -32,19 +33,19 @@ public class HandleViewResources {
|
| android.R.attr.textSelectHandleRight,
|
| };
|
|
|
| - public static Drawable getLeftHandleDrawable(Context context) {
|
| - return getHandleDrawable(context, LEFT_HANDLE_ATTRS);
|
| + public static Drawable getLeftHandleDrawable(Context context, boolean invert) {
|
| + return getHandleDrawable(context, LEFT_HANDLE_ATTRS, invert);
|
| }
|
|
|
| - public static Drawable getCenterHandleDrawable(Context context) {
|
| - return getHandleDrawable(context, CENTER_HANDLE_ATTRS);
|
| + public static Drawable getCenterHandleDrawable(Context context, boolean invert) {
|
| + return getHandleDrawable(context, CENTER_HANDLE_ATTRS, invert);
|
| }
|
|
|
| - public static Drawable getRightHandleDrawable(Context context) {
|
| - return getHandleDrawable(context, RIGHT_HANDLE_ATTRS);
|
| + public static Drawable getRightHandleDrawable(Context context, boolean invert) {
|
| + return getHandleDrawable(context, RIGHT_HANDLE_ATTRS, invert);
|
| }
|
|
|
| - private static Drawable getHandleDrawable(Context context, final int[] attrs) {
|
| + private static Drawable getHandleDrawable(Context context, final int[] attrs, boolean invert) {
|
| TypedArray a = context.getTheme().obtainStyledAttributes(attrs);
|
| Drawable drawable = a.getDrawable(0);
|
| if (drawable == null) {
|
| @@ -57,7 +58,22 @@ public class HandleViewResources {
|
| }
|
| }
|
| a.recycle();
|
| - return drawable;
|
| + if (!invert) return drawable;
|
| + return invertDrawable(drawable, 180);
|
| + }
|
| +
|
| + static Drawable invertDrawable(final Drawable drawable, final int angle) {
|
| + final Drawable[] drawableArray = {drawable};
|
| + return new LayerDrawable(drawableArray) {
|
| + @Override
|
| + public void draw(final Canvas canvas) {
|
| + canvas.save();
|
| + canvas.rotate(
|
| + angle, drawable.getBounds().width() / 2, drawable.getBounds().height() / 2);
|
| + super.draw(canvas);
|
| + canvas.restore();
|
| + }
|
| + };
|
| }
|
|
|
| private static Bitmap getHandleBitmap(Context context, final int[] attrs) {
|
| @@ -81,7 +97,7 @@ public class HandleViewResources {
|
| if (bitmap != null) return bitmap;
|
| }
|
|
|
| - Drawable drawable = getHandleDrawable(context, attrs);
|
| + Drawable drawable = getHandleDrawable(context, attrs, false);
|
| assert drawable != null;
|
|
|
| final int width = drawable.getIntrinsicWidth();
|
|
|