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

Commit cb012894 authored by Dan Sandler's avatar Dan Sandler
Browse files

Don't clear effects when the panel is fully collapsed.

Otherwise, a FLAG_SHOW_WHEN_LOCKED activity would be unable
to make noise (particularly in conjunction with a long
sound, or FLAG_INSISTENT) because the mere presence of the
status bar on screen would generate an updateVisibleToUser()
call, which would in turn use onPanelRevealed() to call
clearEffects().

Instead, we have to clear effects from deep in the stack
scroller; that's apparently the only place right now where
we know with 100% certainty that notifications are actually
visible to the user.

We also no longer clear effects just because the keyguard is
shown. That's silly.

Bug: 26863782
Change-Id: I9ec53024f4be060da203b835d31da81104e8c8e6
parent 57f8462f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1856,15 +1856,16 @@ public abstract class BaseStatusBar extends SystemUI implements

    /**
     * The LEDs are turned off when the notification panel is shown, even just a little bit.
     * See also NotificationStackScrollLayout.setIsExpanded() for another place where we
     * attempt to do this.
     */
    protected void handleVisibleToUserChanged(boolean visibleToUser) {
        try {
            if (visibleToUser) {
                boolean pinnedHeadsUp = mHeadsUpManager.hasPinnedHeadsUp();
                boolean clearNotificationEffects =
                    ((mShowLockscreenNotifications && mState == StatusBarState.KEYGUARD) ||
                            (!pinnedHeadsUp && (mState == StatusBarState.SHADE
                                    || mState == StatusBarState.SHADE_LOCKED)));
                        !isPanelFullyCollapsed() &&
                        (mState == StatusBarState.SHADE || mState == StatusBarState.SHADE_LOCKED);
                int notificationLoad = mNotificationData.getActiveNotifications().size();
                if (pinnedHeadsUp && isPanelFullyCollapsed())  {
                    notificationLoad = 1;
+10 −0
Original line number Diff line number Diff line
@@ -2691,6 +2691,16 @@ public class NotificationStackScrollLayout extends ViewGroup
        if (changed) {
            if (!mIsExpanded) {
                mGroupManager.collapseAllGroups();
            } else {
                // XXX: HACK: we should not be clearing notification effects from way down here.
                // But at the moment we don't have a reliable way to know when the window is
                // actually exposed to the air, so
                if (mPhoneStatusBar.getBarState() != StatusBarState.KEYGUARD) {
                    if (DEBUG) {
                        Log.v(TAG, "clearing notification effects from scroller");
                    }
                    mPhoneStatusBar.clearNotificationEffects();
                }
            }
            updateNotificationAnimationStates();
            updateChronometers();