Merge "Fix toggle QS tiles don't respond when One-handed mode triggered" into tm-dev

This commit is contained in:
Jason Chang
2022-06-07 07:27:25 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 2 deletions

View File

@@ -3642,6 +3642,18 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
@ShadeViewRefactor(RefactorComponent.INPUT)
protected boolean isInsideQsHeader(MotionEvent ev) {
mQsHeader.getBoundsOnScreen(mQsHeaderBound);
/**
* One-handed mode defines a feature FEATURE_ONE_HANDED of DisplayArea {@link DisplayArea}
* that will translate down the Y-coordinate whole window screen type except for
* TYPE_NAVIGATION_BAR and TYPE_NAVIGATION_BAR_PANEL .{@link DisplayAreaPolicy}.
*
* So, to consider triggered One-handed mode would translate down the absolute Y-coordinate
* of DisplayArea into relative coordinates for all windows, we need to correct the
* QS Head bounds here.
*/
final int xOffset = Math.round(ev.getRawX() - ev.getX());
final int yOffset = Math.round(ev.getRawY() - ev.getY());
mQsHeaderBound.offsetTo(xOffset, yOffset);
return mQsHeaderBound.contains((int) ev.getRawX(), (int) ev.getRawY());
}

View File

@@ -608,10 +608,10 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
assertFalse(mStackScroller.isInsideQsHeader(event1));
MotionEvent event2 = transformEventForView(createMotionEvent(150f, 150f), mStackScroller);
assertTrue(mStackScroller.isInsideQsHeader(event2));
assertFalse(mStackScroller.isInsideQsHeader(event2));
MotionEvent event3 = transformEventForView(createMotionEvent(250f, 250f), mStackScroller);
assertTrue(mStackScroller.isInsideQsHeader(event2));
assertTrue(mStackScroller.isInsideQsHeader(event3));
}
@Test