Merge "Fix notification group scroll in split shade" into tm-dev

This commit is contained in:
Nicolò Mazzucato
2022-03-30 12:56:48 +00:00
committed by Android (Google) Code Review
3 changed files with 13 additions and 9 deletions

View File

@@ -347,7 +347,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
setDimAmount((Float) animation.getAnimatedValue()); 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 mContinuousShadowUpdate;
private boolean mContinuousBackgroundUpdate; private boolean mContinuousBackgroundUpdate;
private ViewTreeObserver.OnPreDrawListener mShadowUpdater private ViewTreeObserver.OnPreDrawListener mShadowUpdater
@@ -1598,8 +1600,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
} }
@ShadeViewRefactor(RefactorComponent.ADAPTER) @ShadeViewRefactor(RefactorComponent.ADAPTER)
public void setQsContainer(ViewGroup qsContainer) { public void setQsHeader(ViewGroup qsHeader) {
mQsContainer = qsContainer; mQsHeader = qsHeader;
} }
@ShadeViewRefactor(RefactorComponent.ADAPTER) @ShadeViewRefactor(RefactorComponent.ADAPTER)
@@ -3458,7 +3460,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
if (!isScrollingEnabled()) { if (!isScrollingEnabled()) {
return false; return false;
} }
if (isInsideQsContainer(ev) && !mIsBeingDragged) { if (isInsideQsHeader(ev) && !mIsBeingDragged) {
return false; return false;
} }
mForcedScroll = null; mForcedScroll = null;
@@ -3611,8 +3613,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
} }
@ShadeViewRefactor(RefactorComponent.INPUT) @ShadeViewRefactor(RefactorComponent.INPUT)
protected boolean isInsideQsContainer(MotionEvent ev) { protected boolean isInsideQsHeader(MotionEvent ev) {
return ev.getY() < mQsContainer.getBottom(); mQsHeader.getBoundsOnScreen(mQsHeaderBound);
return mQsHeaderBound.contains((int) ev.getX(), (int) ev.getY());
} }
@ShadeViewRefactor(RefactorComponent.INPUT) @ShadeViewRefactor(RefactorComponent.INPUT)

View File

@@ -1234,8 +1234,9 @@ public class NotificationStackScrollLayoutController {
mView.setExpandedHeight(expandedHeight); mView.setExpandedHeight(expandedHeight);
} }
public void setQsContainer(ViewGroup view) { /** Sets the QS header. Used to check if a touch is within its bounds. */
mView.setQsContainer(view); public void setQsHeader(ViewGroup view) {
mView.setQsHeader(view);
} }
public void setAnimationsEnabled(boolean enabled) { public void setAnimationsEnabled(boolean enabled) {

View File

@@ -3592,7 +3592,7 @@ public class NotificationPanelViewController extends PanelViewController {
} }
}); });
mLockscreenShadeTransitionController.setQS(mQs); mLockscreenShadeTransitionController.setQS(mQs);
mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView()); mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader());
mQs.setScrollListener(mScrollListener); mQs.setScrollListener(mScrollListener);
updateQsExpansion(); updateQsExpansion();
} }