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(); |