diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java index 2e22bfbdf9aaa..56fc970543160 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/QuickStepContract.java @@ -121,6 +121,8 @@ public class QuickStepContract { // Whether the screen is currently transitioning into the state indicated by // SYSUI_STATE_SCREEN_ON. public static final int SYSUI_STATE_SCREEN_TRANSITION = 1 << 29; + // The notification panel expansion fraction is > 0 + public static final int SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE = 1 << 30; // Mask for SystemUiStateFlags to isolate SYSUI_STATE_SCREEN_ON and // SYSUI_STATE_SCREEN_TRANSITION, to match SCREEN_STATE_* diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 3541aaf53a7e4..ae669dcf80fad 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -36,6 +36,7 @@ import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_CLOS import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_OPEN; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_OPENING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE; @@ -3395,7 +3396,9 @@ public final class NotificationPanelViewController implements Dumpable { Log.d(TAG, "Updating panel sysui state flags: fullyExpanded=" + isFullyExpanded() + " inQs=" + mQsController.getExpanded()); } - mSysUiState.setFlag(SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED, + mSysUiState + .setFlag(SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE, getExpandedFraction() > 0) + .setFlag(SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED, isFullyExpanded() && !mQsController.getExpanded()) .setFlag(SYSUI_STATE_QUICK_SETTINGS_EXPANDED, isFullyExpanded() && mQsController.getExpanded()).commitUpdate(mDisplayId); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 76abdee006ea5..e1606919bdf83 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -1440,16 +1440,16 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { private void onPanelExpansionChanged(ShadeExpansionChangeEvent event) { float fraction = event.getFraction(); boolean tracking = event.getTracking(); - boolean isExpanded = event.getExpanded(); dispatchPanelExpansionForKeyguardDismiss(fraction, tracking); + if (getNotificationPanelViewController() != null) { + getNotificationPanelViewController().updateSystemUiStateFlags(); + } + if (fraction == 0 || fraction == 1) { if (getNavigationBarView() != null) { getNavigationBarView().onStatusBarPanelStateChanged(); } - if (getNotificationPanelViewController() != null) { - getNotificationPanelViewController().updateSystemUiStateFlags(); - } } }