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

Commit a424c504 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a bug where the scrollrange was calculated wrong

First the scrollrange would allow the first element to be
collapsed which doesn't make sense now that it's scrolling
off. It could also be wrong if the notification was a group.
Then the scrollrange was also wrong because the bottomInset
was always added even though it shouldn't have done that.

Change-Id: I7184946c4406bc0b5796194af86155aa6ba68c8e
Fixes: 28015188
parent 567e845d
Loading
Loading
Loading
Loading
+13 −20
Original line number Diff line number Diff line
@@ -926,7 +926,7 @@ public class NotificationStackScrollLayout extends ViewGroup
        int positionInLinearLayout = getPositionInLinearLayout(v);

        int targetScroll = positionInLinearLayout + expandableView.getActualHeight() +
                mBottomInset - getHeight() + getTopPadding();
                getImeInset() - getHeight() + getTopPadding();
        if (mOwnScrollY < targetScroll) {
            mScroller.startScroll(mScrollX, mOwnScrollY, 0, targetScroll - mOwnScrollY);
            mDontReportNextOverScroll = true;
@@ -936,8 +936,7 @@ public class NotificationStackScrollLayout extends ViewGroup

    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        mBottomInset = Math.max(0, insets.getSystemWindowInsetBottom()
                - (getRootView().getHeight() - getHeight()));
        mBottomInset = insets.getSystemWindowInsetBottom();

        int range = getScrollRange();
        if (mOwnScrollY > range) {
@@ -1506,23 +1505,17 @@ public class NotificationStackScrollLayout extends ViewGroup
    }

    private int getScrollRange() {
        int scrollRange = 0;
        ExpandableView firstChild = (ExpandableView) getFirstChildNotGone();
        if (firstChild != null) {
        int contentHeight = getContentHeight();
            scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight + mBottomStackPeekSize
        int scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight + mBottomStackPeekSize
                + mBottomStackSlowDownHeight);
            if (scrollRange > 0) {
                int firstChildMaxExpandHeight = getMaxExpandHeight(firstChild);
                // We want to at least be able collapse the first item and not ending in a weird
                // end state.
                scrollRange = Math.max(scrollRange, firstChildMaxExpandHeight
                        - firstChild.getMinHeight());
        int imeInset = getImeInset();
        scrollRange += Math.min(imeInset, Math.max(0,
                getContentHeight() - (getHeight() - imeInset)));
        return scrollRange;
    }
        }
        int imeOverlap = Math.max(0,
                getContentHeight() - (getHeight() - mBottomInset));
        return scrollRange + imeOverlap;

    private int getImeInset() {
        return Math.max(0, mBottomInset - (getRootView().getHeight() - getHeight()));
    }

    /**