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

Commit 5e861920 authored by Selim Cinek's avatar Selim Cinek Committed by android-build-merger
Browse files

Merge "Fixed an issue where a notification could stay userlocked" into oc-dr1-dev

am: 7b04275a

Change-Id: I0f67b6aeb6b770df12679fc333f506b67e79b5f3
parents 2b32e499 7b04275a
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -545,6 +545,16 @@ public class ExpandHelper implements Gefingerpoken {
     */
    @VisibleForTesting
    void finishExpanding(boolean forceAbort, float velocity) {
        finishExpanding(forceAbort, velocity, true /* allowAnimation */);
    }

    /**
     * Finish the current expand motion
     * @param forceAbort whether the expansion should be forcefully aborted and returned to the old
     *                   state
     * @param velocity the velocity this was expanded/ collapsed with
     */
    private void finishExpanding(boolean forceAbort, float velocity, boolean allowAnimation) {
        if (!mExpanding) return;

        if (DEBUG) Log.d(TAG, "scale in finishing on view: " + mResizedView);
@@ -568,7 +578,7 @@ public class ExpandHelper implements Gefingerpoken {
        mCallback.expansionStateChanged(false);
        int naturalHeight = mScaler.getNaturalHeight();
        float targetHeight = nowExpanded ? naturalHeight : mSmallSize;
        if (targetHeight != currentHeight && mEnabled) {
        if (targetHeight != currentHeight && mEnabled && allowAnimation) {
            mScaleAnimation.setFloatValues(targetHeight);
            mScaleAnimation.setupStartValues();
            final View scaledView = mResizedView;
@@ -621,11 +631,23 @@ public class ExpandHelper implements Gefingerpoken {
        mResizedView = null;
    }

    /**
     * Use this to abort any pending expansions in progress and force that there will be no
     * animations.
     */
    public void cancelImmediately() {
        cancel(false /* allowAnimation */);
    }

    /**
     * Use this to abort any pending expansions in progress.
     */
    public void cancel() {
        finishExpanding(true /* forceAbort */, 0f /* velocity */);
        cancel(true /* allowAnimation */);
    }

    private void cancel(boolean allowAnimation) {
        finishExpanding(true /* forceAbort */, 0f /* velocity */, allowAnimation);
        clearView();

        // reset the gesture detector
+23 −8
Original line number Diff line number Diff line
@@ -3362,7 +3362,22 @@ public class NotificationStackScrollLayout extends ViewGroup
        if (!mIsExpanded) {
            setOwnScrollY(0);
            mStatusBar.resetUserExpandedStates();
            clearTemporaryViews();
            clearUserLockedViews();
        }
    }

    private void clearUserLockedViews() {
        for (int i = 0; i < getChildCount(); i++) {
            ExpandableView child = (ExpandableView) getChildAt(i);
            if (child instanceof ExpandableNotificationRow) {
                ExpandableNotificationRow row = (ExpandableNotificationRow) child;
                row.setUserLocked(false);
            }
        }
    }

    private void clearTemporaryViews() {
        // lets make sure nothing is in the overlay / transient anymore
        clearTemporaryViews(this);
        for (int i = 0; i < getChildCount(); i++) {
@@ -3373,7 +3388,6 @@ public class NotificationStackScrollLayout extends ViewGroup
            }
        }
    }
    }

    private void clearTemporaryViews(ViewGroup viewGroup) {
        while (viewGroup != null && viewGroup.getTransientViewCount() != 0) {
@@ -3405,6 +3419,7 @@ public class NotificationStackScrollLayout extends ViewGroup
        if (changed) {
            if (!mIsExpanded) {
                mGroupManager.collapseAllGroups();
                mExpandHelper.cancelImmediately();
            }
            updateNotificationAnimationStates();
            updateChronometers();