diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 32d37d18f4076..c0553b5c3c2d5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -347,7 +347,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable setDimAmount((Float) animation.getAnimatedValue()); } }; - protected ViewGroup mQsContainer; + protected ViewGroup mQsHeader; + // Rect of QsHeader. Kept as a field just to avoid creating a new one each time. + private Rect mQsHeaderBound = new Rect(); private boolean mContinuousShadowUpdate; private boolean mContinuousBackgroundUpdate; private ViewTreeObserver.OnPreDrawListener mShadowUpdater @@ -1598,8 +1600,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } @ShadeViewRefactor(RefactorComponent.ADAPTER) - public void setQsContainer(ViewGroup qsContainer) { - mQsContainer = qsContainer; + public void setQsHeader(ViewGroup qsHeader) { + mQsHeader = qsHeader; } @ShadeViewRefactor(RefactorComponent.ADAPTER) @@ -3458,7 +3460,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable if (!isScrollingEnabled()) { return false; } - if (isInsideQsContainer(ev) && !mIsBeingDragged) { + if (isInsideQsHeader(ev) && !mIsBeingDragged) { return false; } mForcedScroll = null; @@ -3611,8 +3613,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } @ShadeViewRefactor(RefactorComponent.INPUT) - protected boolean isInsideQsContainer(MotionEvent ev) { - return ev.getY() < mQsContainer.getBottom(); + protected boolean isInsideQsHeader(MotionEvent ev) { + mQsHeader.getBoundsOnScreen(mQsHeaderBound); + return mQsHeaderBound.contains((int) ev.getX(), (int) ev.getY()); } @ShadeViewRefactor(RefactorComponent.INPUT) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index 5bc50ae11fb74..3e630cdf8f971 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -1234,8 +1234,9 @@ public class NotificationStackScrollLayoutController { mView.setExpandedHeight(expandedHeight); } - public void setQsContainer(ViewGroup view) { - mView.setQsContainer(view); + /** Sets the QS header. Used to check if a touch is within its bounds. */ + public void setQsHeader(ViewGroup view) { + mView.setQsHeader(view); } public void setAnimationsEnabled(boolean enabled) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 2d16b52839ebb..11628cb75e877 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -3592,7 +3592,7 @@ public class NotificationPanelViewController extends PanelViewController { } }); mLockscreenShadeTransitionController.setQS(mQs); - mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView()); + mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader()); mQs.setScrollListener(mScrollListener); updateQsExpansion(); }