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

Commit 4506fcf4 authored by Selim Cinek's avatar Selim Cinek
Browse files

Removed logic that sized the view before the shelf

Since the shelf is positioned algorithmically, it can
simply clip the view instead of forcing the height.
This leads to less artificatial animations and avoids
flickers that may happen if the height isn't correct.

Bug: 172289889
Test: expand shade with notifications, observe normal clipping, no hole
Change-Id: I8efae53ba934cdf8553812c513f2de0cc23e1d6c
parent fedad016
Loading
Loading
Loading
Loading
+2 −27
Original line number Diff line number Diff line
@@ -258,16 +258,14 @@ public class StackScrollAlgorithm {
            }
        }

        // Save (height of view before shelf, index of first view in shelf) from when shade is fully
        // Save the index of first view in shelf from when shade is fully
        // expanded. Consider updating these states in updateContentView instead so that we don't
        // have to recalculate in every frame.
        float currentY = -scrollY;
        if (!ambientState.isOnKeyguard()) {
            currentY += mNotificationScrimPadding;
        }
        float previousY = 0;
        state.firstViewInShelf = null;
        state.viewHeightBeforeShelf = -1;
        for (int i = 0; i < state.visibleChildren.size(); i++) {
            final ExpandableView view = state.visibleChildren.get(i);

@@ -285,17 +283,8 @@ public class StackScrollAlgorithm {
                        && !(view instanceof FooterView)
                        && state.firstViewInShelf == null) {
                    state.firstViewInShelf = view;
                    // There might be a section gap right before the shelf.
                    // Limit the height of the view before the shelf so that it does not include
                    // a gap and become taller than it normally is.
                    state.viewHeightBeforeShelf = Math.min(getMaxAllowedChildHeight(view),
                            ambientState.getStackEndHeight()
                            - ambientState.getShelf().getIntrinsicHeight()
                            - mPaddingBetweenElements
                            - previousY);
                }
            }
            previousY = currentY;
            currentY = currentY
                    + getMaxAllowedChildHeight(view)
                    + mPaddingBetweenElements;
@@ -452,16 +441,7 @@ public class StackScrollAlgorithm {
            }

            // Clip height of view right before shelf.
            float maxViewHeight = getMaxAllowedChildHeight(view);
            if (ambientState.isExpansionChanging()
                    && algorithmState.viewHeightBeforeShelf != -1) {
                final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf(
                        algorithmState.firstViewInShelf);
                if (i == indexOfFirstViewInShelf - 1) {
                    maxViewHeight = algorithmState.viewHeightBeforeShelf;
                }
            }
            viewState.height = (int) (maxViewHeight * expansionFraction);
            viewState.height = (int) (getMaxAllowedChildHeight(view) * expansionFraction);
        }

        algorithmState.mCurrentYPosition += viewState.height
@@ -734,11 +714,6 @@ public class StackScrollAlgorithm {
         */
        public ExpandableView firstViewInShelf;

        /**
         * Height of view right before the shelf.
         */
        public float viewHeightBeforeShelf;

        /**
         * The children from the host view which are not gone.
         */