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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18467054

Change-Id: Icb2a6bdb842fa9ff3614eb8812559bdd0fde2351
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jason Chang
2022-06-07 07:48:25 +00:00
committed by Automerger Merge Worker
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