Apply all Canvas transformations to ColorDrawable.
Change-Id: I29252c58224b236d0770ec005da9842990ef2c06
diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java
index 8bd797b..3d21048 100644
--- a/core/java/android/widget/ExpandableListView.java
+++ b/core/java/android/widget/ExpandableListView.java
@@ -185,7 +185,6 @@
/** Drawable to be used as a divider when it is adjacent to any children */
private Drawable mChildDivider;
- private boolean mClipChildDivider;
// Bounds of the indicator to be drawn
private final Rect mIndicatorRect = new Rect();
@@ -379,7 +378,6 @@
*/
public void setChildDivider(Drawable childDivider) {
mChildDivider = childDivider;
- mClipChildDivider = childDivider != null && childDivider instanceof ColorDrawable;
}
@Override
@@ -396,17 +394,8 @@
pos.groupMetadata.lastChildFlPos != pos.groupMetadata.flPos)) {
// These are the cases where we draw the child divider
final Drawable divider = mChildDivider;
- final boolean clip = mClipChildDivider;
- if (!clip) {
- divider.setBounds(bounds);
- } else {
- canvas.save();
- canvas.clipRect(bounds);
- }
+ divider.setBounds(bounds);
divider.draw(canvas);
- if (clip) {
- canvas.restore();
- }
pos.recycle();
return;
}
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index e5a34e8..7c4897a 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -107,7 +107,6 @@
private boolean mIsCacheColorOpaque;
private boolean mDividerIsOpaque;
- private boolean mClipDivider;
private boolean mHeaderDividersEnabled;
private boolean mFooterDividersEnabled;
@@ -3057,20 +3056,9 @@
void drawDivider(Canvas canvas, Rect bounds, int childIndex) {
// This widget draws the same divider for all children
final Drawable divider = mDivider;
- final boolean clipDivider = mClipDivider;
- if (!clipDivider) {
- divider.setBounds(bounds);
- } else {
- canvas.save();
- canvas.clipRect(bounds);
- }
-
+ divider.setBounds(bounds);
divider.draw(canvas);
-
- if (clipDivider) {
- canvas.restore();
- }
}
/**
@@ -3091,10 +3079,8 @@
public void setDivider(Drawable divider) {
if (divider != null) {
mDividerHeight = divider.getIntrinsicHeight();
- mClipDivider = divider instanceof ColorDrawable;
} else {
mDividerHeight = 0;
- mClipDivider = false;
}
mDivider = divider;
mDividerIsOpaque = divider == null || divider.getOpacity() == PixelFormat.OPAQUE;