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

Commit f87c4e7b authored by Jeff DeCew's avatar Jeff DeCew
Browse files

Fix the animation glitch when NSSL adds and removes a HUN in the same frame.

Bug: 185680162
Fixes: 213876313
Test: visual inspection when legacy pipeline initiates a group alert transfer
Merged-In: I755fff6944da0699d9cb7e6b2456e4811f7888d5
Change-Id: I755fff6944da0699d9cb7e6b2456e4811f7888d5
(cherry picked from commit 35720797)
parent 99f9addc
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable

    public static final float BACKGROUND_ALPHA_DIMMED = 0.7f;
    private static final String TAG = "StackScroller";
    private static final boolean SPEW = Log.isLoggable(TAG, Log.VERBOSE);

    // Usage:
    // adb shell setprop persist.debug.nssl true && adb reboot
@@ -3156,6 +3157,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
            AnimationEvent event = new AnimationEvent(row, type);
            event.headsUpFromBottom = onBottom;
            mAnimationEvents.add(event);
            if (SPEW) {
                Log.v(TAG, "Generating HUN animation event: "
                        + " isHeadsUp=" + isHeadsUp
                        + " type=" + type
                        + " onBottom=" + onBottom
                        + " row=" + row.getEntry().getKey());
            }
        }
        mHeadsUpChangeAnimations.clear();
        mAddedHeadsUpChildren.clear();
@@ -4679,7 +4687,22 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable

    @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
    public void generateHeadsUpAnimation(ExpandableNotificationRow row, boolean isHeadsUp) {
        if (mAnimationsEnabled && (isHeadsUp || mHeadsUpGoingAwayAnimationsAllowed)) {
        final boolean add = mAnimationsEnabled && (isHeadsUp || mHeadsUpGoingAwayAnimationsAllowed);
        if (SPEW) {
            Log.v(TAG, "generateHeadsUpAnimation:"
                    + " willAdd=" + add
                    + " isHeadsUp=" + isHeadsUp
                    + " row=" + row.getEntry().getKey());
        }
        if (add) {
            // If we're hiding a HUN we just started showing THIS FRAME, then remove that event,
            // and do not add the disappear event either.
            if (!isHeadsUp && mHeadsUpChangeAnimations.remove(new Pair<>(row, true))) {
                if (SPEW) {
                    Log.v(TAG, "generateHeadsUpAnimation: previous hun appear animation cancelled");
                }
                return;
            }
            mHeadsUpChangeAnimations.add(new Pair<>(row, isHeadsUp));
            mNeedsAnimation = true;
            if (!mIsExpanded && !mWillExpand && !isHeadsUp) {