Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2998a02 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Account for hotspot bounds in RippleDrawable projection check" into mnc-dev

parents 2964c7b8 99ca2a84
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -333,17 +333,29 @@ public class RippleDrawable extends LayerDrawable {
     */
    @Override
    public boolean isProjected() {
        // If the maximum radius is contained entirely within the bounds, we
        // don't need to project this ripple.
        // If the layer is bounded, then we don't need to project.
        if (isBounded()) {
            return false;
        }

        // Otherwise, if the maximum radius is contained entirely within the
        // bounds then we don't need to project. This is sort of a hack to
        // prevent check box ripples from being projected across the edges of
        // scroll views. It does not impact rendering performance, and it can
        // be removed once we have better handling of projection in scrollable
        // views.
        final int radius = mState.mMaxRadius;
        final Rect bounds = getBounds();
        if (radius != RADIUS_AUTO && radius <= bounds.width() / 2
                && radius <= bounds.height() / 2) {
        final Rect drawableBounds = getBounds();
        final Rect hotspotBounds = mHotspotBounds;
        if (radius != RADIUS_AUTO
                && radius <= hotspotBounds.width() / 2
                && radius <= hotspotBounds.height() / 2
                && (drawableBounds.equals(hotspotBounds)
                        || drawableBounds.contains(hotspotBounds))) {
            return false;
        }

        // Otherwise, if the layer is bounded then we don't need to project.
        return !isBounded();
        return true;
    }

    private boolean isBounded() {