diff options
3 files changed, 31 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 9ef9211..c10be7c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -117,6 +117,7 @@ public class NotificationPanelView extends PanelView implements * intercepted yet. */ private boolean mIntercepting; + private boolean mPanelExpanded; private boolean mQsExpanded; private boolean mQsExpandedWhenExpandingStarted; private boolean mQsFullyExpanded; @@ -1496,13 +1497,22 @@ public class NotificationPanelView extends PanelView implements updateHeader(); updateUnlockIcon(); updateNotificationTranslucency(); - mHeadsUpManager.setIsExpanded(!isFullyCollapsed()); + updatePanelExpanded(); mNotificationStackScroller.setShadeExpanded(!isFullyCollapsed()); if (DEBUG) { invalidate(); } } + private void updatePanelExpanded() { + boolean isExpanded = !isFullyCollapsed(); + if (mPanelExpanded != isExpanded) { + mHeadsUpManager.setIsExpanded(isExpanded); + mStatusBar.setPanelExpanded(isExpanded); + mPanelExpanded = isExpanded; + } + } + /** * @return a temporary override of {@link #mQsMaxExpansionHeight}, which is needed when * collapsing QS / the panel when QS was scrolled diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 1361038..9fe591e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1967,6 +1967,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, return !mUnlockMethodCache.isCurrentlyInsecure(); } + public void setPanelExpanded(boolean isExpanded) { + mStatusBarWindowManager.setPanelExpanded(isExpanded); + } + /** * All changes to the status bar and notifications funnel through here and are batched. */ @@ -2027,7 +2031,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Expand the window to encompass the full screen in anticipation of the drag. // This is only possible to do atomically because the status bar is at the top of the screen! - mStatusBarWindowManager.setStatusBarExpanded(true); + mStatusBarWindowManager.setPanelVisible(true); mStatusBarView.setFocusable(false); visibilityChanged(true); @@ -2156,7 +2160,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, visibilityChanged(false); // Shrink the window to the size of the status bar only - mStatusBarWindowManager.setStatusBarExpanded(false); + mStatusBarWindowManager.setPanelVisible(false); mStatusBarWindowManager.setForceStatusBarVisible(false); mStatusBarView.setFocusable(true); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java index 422d868..4f1c652 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java @@ -114,12 +114,12 @@ public class StatusBarWindowManager { } private void applyFocusableFlag(State state) { + boolean panelFocusable = state.statusBarFocusable && state.panelExpanded; if (state.isKeyguardShowingAndNotOccluded() && state.keyguardNeedsInput - && state.bouncerShowing - || BaseStatusBar.ENABLE_REMOTE_INPUT && state.statusBarExpanded) { + && state.bouncerShowing || BaseStatusBar.ENABLE_REMOTE_INPUT && panelFocusable) { mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; - } else if (state.isKeyguardShowingAndNotOccluded() || state.statusBarFocusable) { + } else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) { mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mLpChanged.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; } else { @@ -130,7 +130,7 @@ public class StatusBarWindowManager { private void applyHeight(State state) { boolean expanded = !state.forceCollapsed && (state.isKeyguardShowingAndNotOccluded() - || state.statusBarExpanded || state.keyguardFadingAway || state.bouncerShowing + || state.panelVisible || state.keyguardFadingAway || state.bouncerShowing || state.headsUpShowing); if (expanded) { mLpChanged.height = ViewGroup.LayoutParams.MATCH_PARENT; @@ -213,9 +213,9 @@ public class StatusBarWindowManager { apply(mCurrentState); } - public void setStatusBarExpanded(boolean expanded) { - mCurrentState.statusBarExpanded = expanded; - mCurrentState.statusBarFocusable = expanded; + public void setPanelVisible(boolean visible) { + mCurrentState.panelVisible = visible; + mCurrentState.statusBarFocusable = visible; apply(mCurrentState); } @@ -267,11 +267,17 @@ public class StatusBarWindowManager { apply(mCurrentState); } + public void setPanelExpanded(boolean isExpanded) { + mCurrentState.panelExpanded = isExpanded; + apply(mCurrentState); + } + private static class State { boolean keyguardShowing; boolean keyguardOccluded; boolean keyguardNeedsInput; - boolean statusBarExpanded; + boolean panelVisible; + boolean panelExpanded; boolean statusBarFocusable; boolean bouncerShowing; boolean keyguardFadingAway; |