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

Commit fbd77c48 authored by Tony Wickham's avatar Tony Wickham
Browse files

Distinguish mDragHandleProgress from mMidProgress

mMidProgress is intended to be the point at which we reach Overview when
swiping up and thus start scrimming it as All Apps shows above it. For
that reason, mMidProgress needs to match OverviewState's progress. In
contrast, the drag handle (accessibility arrow) can move up sooner to
avoid overlapping with the QSB; for this, we added mDragHandleProgress.

Bug: 136800511
Change-Id: I2825ff798707530420855257350e492b4b9b77dc
parent b6841ac6
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -74,6 +74,9 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
    private int mMidAlpha;
    private float mMidProgress;

    // The progress at which the drag handle starts moving up with the shelf.
    private float mDragHandleProgress;

    private Interpolator mBeforeMidProgressColorInterpolator = ACCEL;
    private Interpolator mAfterMidProgressColorInterpolator = ACCEL;

@@ -150,15 +153,16 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis

            if ((OVERVIEW.getVisibleElements(mLauncher) & ALL_APPS_HEADER_EXTRA) == 0) {
                mMidProgress = 1;
                mDragHandleProgress = 1;
                mMidAlpha = 0;
            } else {
                mMidAlpha = Themes.getAttrInteger(getContext(), R.attr.allAppsInterimScrimAlpha);
                mMidProgress =  OVERVIEW.getVerticalProgress(mLauncher);
                Rect hotseatPadding = dp.getHotseatLayoutPadding();
                int hotseatSize = dp.hotseatBarSizePx + dp.getInsets().bottom
                        - hotseatPadding.bottom - hotseatPadding.top;
                float arrowTop = Math.min(hotseatSize, OverviewState.getDefaultSwipeHeight(dp));
                mMidProgress =  1 - (arrowTop / mShiftRange);

                float dragHandleTop = Math.min(hotseatSize, OverviewState.getDefaultSwipeHeight(dp));
                mDragHandleProgress =  1 - (dragHandleTop / mShiftRange);
            }
            mTopOffset = dp.getInsets().top - mShelfOffset;
            mShelfTopAtThreshold = mShiftRange * SCRIM_CATCHUP_THRESHOLD + mTopOffset;
@@ -199,8 +203,6 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
                    mProgress, mMidProgress, 1, mMidAlpha, 0, mBeforeMidProgressColorInterpolator));
            mShelfColor = setColorAlphaBound(mEndScrim, alpha);
        } else {
            mDragHandleOffset += mShiftRange * (mMidProgress - mProgress);

            // Note that these ranges and interpolators are inverted because progress goes 1 to 0.
            int alpha = Math.round(
                    Utilities.mapToRange(mProgress, (float) 0, mMidProgress, (float) mEndAlpha,
@@ -212,6 +214,10 @@ public class ShelfScrimView extends ScrimView implements NavigationModeChangeLis
                            (float) 0, LINEAR));
            mRemainingScreenColor = setColorAlphaBound(mScrimColor, remainingScrimAlpha);
        }

        if (mProgress < mDragHandleProgress) {
            mDragHandleOffset += mShiftRange * (mDragHandleProgress - mProgress);
        }
    }

    @Override