diff options
| author | 2022-06-07 07:48:25 +0000 | |
|---|---|---|
| committer | 2022-06-07 07:48:25 +0000 | |
| commit | b5149141aaba7975c3e77c7bccc91644550227ff (patch) | |
| tree | 40d97d5542dc4aeb80be65861dab42455862b7ef | |
| parent | 125630da5c167b61f8bd404a2c35118364040ded (diff) | |
| parent | 1ef440bbed93494d3ab7c01224e2692947ae5892 (diff) | |
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>
2 files changed, 14 insertions, 2 deletions
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 270eb13c4224..ed1e78f5cc1d 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 @@ -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()); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index 63e0f53e093d..9961aaee4224 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -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 |