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

Commit dc936201 authored by George Mount's avatar George Mount
Browse files

Fix ChangeClipBounds to set final clip to null.

Bug 35227753

ChangeClipBounds wasn't setting the final clip to null after its
transition if the end clip was supposed to be null.

Test: I9089e0c84718d219cfda266a99fd3dffdbae8512

Change-Id: If928454b30807ccc6b34ed4dfbb14857d99d43be
parent e4b64411
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package android.transition;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.RectEvaluator;
import android.content.Context;
@@ -84,6 +85,7 @@ public class ChangeClipBounds extends Transition {
        }
        Rect start = (Rect) startValues.values.get(PROPNAME_CLIP);
        Rect end = (Rect) endValues.values.get(PROPNAME_CLIP);
        boolean endIsNull = end == null;
        if (start == null && end == null) {
            return null; // No animation required since there is no clip.
        }
@@ -99,6 +101,17 @@ public class ChangeClipBounds extends Transition {

        endValues.view.setClipBounds(start);
        RectEvaluator evaluator = new RectEvaluator(new Rect());
        return ObjectAnimator.ofObject(endValues.view, "clipBounds", evaluator, start, end);
        ObjectAnimator animator =
                ObjectAnimator.ofObject(endValues.view, "clipBounds", evaluator, start, end);
        if (endIsNull) {
            final View endView = endValues.view;
            animator.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    endView.setClipBounds(null);
                }
            });
        }
        return animator;
    }
}