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

Commit cd142a48 authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Fix notifications count change during animation on keyguard

max keyguard displayed notifications was being updated while an animation was in progress, getting a wrong top padding (as all the views were translated upwards during the hint animation).
The update is skipped in this case.

Fixes: 220800339
Fixes: 228170071
Test: add notifications, trigger hint and aod animation => notification count is not updated in the middle
Change-Id: I2cc851437104cac4b228dd6d1b4bb7c3b97e59ef
parent 3fda2bf2
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -338,6 +338,7 @@ public class NotificationPanelViewController extends PanelViewController {
    private boolean mAnimateNextPositionUpdate;
    private float mQuickQsHeaderHeight;
    private ScreenOffAnimationController mScreenOffAnimationController;
    private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;

    private int mTrackingPointer;
    private VelocityTracker mQsVelocityTracker;
@@ -745,7 +746,8 @@ public class NotificationPanelViewController extends PanelViewController {
            KeyguardUnlockAnimationController keyguardUnlockAnimationController,
            NotificationListContainer notificationListContainer,
            PanelEventsEmitter panelEventsEmitter,
            NotificationStackSizeCalculator notificationStackSizeCalculator) {
            NotificationStackSizeCalculator notificationStackSizeCalculator,
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) {
        super(view,
                falsingManager,
                dozeLog,
@@ -846,6 +848,7 @@ public class NotificationPanelViewController extends PanelViewController {
        mAuthController = authController;
        mLockIconViewController = lockIconViewController;
        mScreenOffAnimationController = screenOffAnimationController;
        mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController;
        mRemoteInputManager = remoteInputManager;

        int currentMode = navigationModeController.addListener(
@@ -1251,6 +1254,10 @@ public class NotificationPanelViewController extends PanelViewController {
        }
    }

    private boolean shouldAvoidChangingNotificationsCount() {
        return mHintAnimationRunning || mUnlockedScreenOffAnimationController.isAnimationPlaying();
    }

    public void setKeyguardIndicationController(KeyguardIndicationController indicationController) {
        mKeyguardIndicationController = indicationController;
        mKeyguardIndicationController.setIndicationArea(mKeyguardBottomArea);
@@ -4733,7 +4740,7 @@ public class NotificationPanelViewController extends PanelViewController {
                int oldTop, int oldRight, int oldBottom) {
            DejankUtils.startDetectingBlockingIpcs("NVP#onLayout");
            super.onLayoutChange(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom);
            updateMaxDisplayedNotifications(true);
            updateMaxDisplayedNotifications(!shouldAvoidChangingNotificationsCount());
            setIsFullWidth(mNotificationStackScrollLayoutController.getWidth() == mView.getWidth());

            // Update Clock Pivot
+4 −1
Original line number Diff line number Diff line
@@ -331,6 +331,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
    private NotificationListContainer mNotificationListContainer;
    @Mock
    private NotificationStackSizeCalculator mNotificationStackSizeCalculator;
    @Mock
    private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
    private NotificationPanelViewController.PanelEventsEmitter mPanelEventsEmitter;
    private Optional<SysUIUnfoldComponent> mSysUIUnfoldComponent = Optional.empty();
    private SysuiStatusBarStateController mStatusBarStateController;
@@ -511,7 +513,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
                mKeyguardUnlockAnimationController,
                mNotificationListContainer,
                mPanelEventsEmitter,
                mNotificationStackSizeCalculator);
                mNotificationStackSizeCalculator,
                mUnlockedScreenOffAnimationController);
        mNotificationPanelViewController.initDependencies(
                mCentralSurfaces,
                () -> {},