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

Commit 9f347ae2 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fix first child handling with GONE children.

Bug: 13635952
Change-Id: I970f39a2a33d957f32d3290999fd007f0d323b3b
parent 584a7aa6
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -415,11 +415,9 @@ public class StackScrollAlgorithm {
     */
    private void updateZValuesForState(StackScrollState resultState,
            StackScrollAlgorithmState algorithmState) {
        ViewGroup hostView = resultState.getHostView();
        int childCount = algorithmState.visibleChildren.size();
        for (int i = 0; i < childCount; i++) {
            View child = algorithmState.visibleChildren.get(i);
            if (child.getVisibility() == View.GONE) continue;
            StackScrollState.ViewState childViewState = resultState.getViewStateForView(child);
            if (i < algorithmState.itemsInTopStack) {
                float stackIndex = algorithmState.itemsInTopStack - i;
@@ -453,8 +451,8 @@ public class StackScrollAlgorithm {
    }

    private void updateFirstChildHeightWhileExpanding(ViewGroup hostView) {
        if (hostView.getChildCount() > 0) {
            mFirstChildWhileExpanding = hostView.getChildAt(0);
        mFirstChildWhileExpanding = findFirstVisibleChild(hostView);
        if (mFirstChildWhileExpanding != null) {
            if (mExpandedOnStart) {

                // We are collapsing the shade, so the first child can get as most as high as the
@@ -466,11 +464,21 @@ public class StackScrollAlgorithm {
                mFirstChildMaxHeight = getMaxAllowedChildHeight(mFirstChildWhileExpanding);
            }
        } else {
            mFirstChildWhileExpanding = null;
            mFirstChildMaxHeight = 0;
        }
    }

    private View findFirstVisibleChild(ViewGroup container) {
        int childCount = container.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = container.getChildAt(i);
            if (child.getVisibility() != View.GONE) {
                return child;
            }
        }
        return null;
    }

    public void onExpansionStopped() {
        mIsExpansionChanging = false;
        mFirstChildWhileExpanding = null;