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

Commit 02af41ef authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a bug when double tapping a notification in the normal shade

This fixes that sometimes holes where created when grabbing the panel while
closing the shade (eg. double tapping) or the notifications did not disappear.
It could also happen when using the clear all button.

Bug: 17969040
Bug: 17899136
Bug: 17961295
Bug: 17551216
Change-Id: Id7aa37bbcbae504039f90686e2bc364d18685205
parent f715da3d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -372,6 +372,7 @@ public abstract class PanelView extends FrameLayout {
    }

    protected void onTrackingStarted() {
        mClosing = false;
        mTracking = true;
        mCollapseAfterPeek = false;
        mBar.onTrackingStarted(PanelView.this);
+10 −4
Original line number Diff line number Diff line
@@ -738,8 +738,9 @@ public class StackScrollAlgorithm {
            if (mExpandedOnStart) {

                // We are collapsing the shade, so the first child can get as most as high as the
                // current height.
                mFirstChildMaxHeight = mFirstChildWhileExpanding.getActualHeight();
                // current height or the end value of the animation.
                mFirstChildMaxHeight = StackStateAnimator.getFinalActualHeight(
                        mFirstChildWhileExpanding);
            } else {
                updateFirstChildMaxSizeToMaxHeight();
            }
@@ -801,10 +802,15 @@ public class StackScrollAlgorithm {
        this.mIsExpanded = isExpanded;
    }

    public void notifyChildrenChanged(ViewGroup hostView) {
    public void notifyChildrenChanged(final ViewGroup hostView) {
        if (mIsExpansionChanging) {
            hostView.post(new Runnable() {
                @Override
                public void run() {
                    updateFirstChildHeightWhileExpanding(hostView);
                }
            });
        }
    }

    public void setDimmed(boolean dimmed) {
+17 −1
Original line number Diff line number Diff line
@@ -709,7 +709,7 @@ public class StackStateAnimator {
        };
    }

    private <T> T getChildTag(View child, int tag) {
    private static <T> T getChildTag(View child, int tag) {
        return (T) child.getTag(tag);
    }

@@ -848,4 +848,20 @@ public class StackStateAnimator {
            currentAnimator.cancel();
        }
    }

    /**
     * Get the end value of the height animation running on a view or the actualHeight
     * if no animation is running.
     */
    public static int getFinalActualHeight(ExpandableView view) {
        if (view == null) {
            return 0;
        }
        ValueAnimator heightAnimator = getChildTag(view, TAG_ANIMATOR_HEIGHT);
        if (heightAnimator == null) {
            return view.getActualHeight();
        } else {
            return getChildTag(view, TAG_END_HEIGHT);
        }
    }
}