Chromium Code Reviews| 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) { |
|
jdduke (slow)
2015/04/14 00:00:32
Can we move this code in to the PopupTouchHandleDr
AviD
2015/04/23 14:45:16
Done.
|
| + final Drawable[] drawableArray = {drawable}; |
| + return new LayerDrawable(drawableArray) { |
| + @Override |
| + public void draw(final Canvas canvas) { |
| + canvas.save(); |
| + canvas.rotate( |
|
jdduke (slow)
2015/04/14 00:00:32
Hmm, inverting is not the same as a 180 degree rot
AviD
2015/04/23 14:45:16
Done.
|
| + 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(); |