From 3c3116826b087e6258e62f3dabbc7c5dc9eadaed Mon Sep 17 00:00:00 2001 From: Samuel Fufa Date: Mon, 20 Jul 2020 13:23:08 -0700 Subject: [PATCH] Pass through touches in FolderIcon padding area Pass touch events happening in padding of folder icon to workspace. BubbleTextView already does this. Bug: 161014416 Test: Manual Change-Id: Ibfa24adb2d84efbfab36f02a2240837f03858e43 --- src/com/android/launcher3/folder/FolderIcon.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java index 75275b20e5..32d061cb42 100644 --- a/src/com/android/launcher3/folder/FolderIcon.java +++ b/src/com/android/launcher3/folder/FolderIcon.java @@ -129,6 +129,8 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel private float mDotScale; private Animator mDotScaleAnim; + private Rect mTouchArea = new Rect(); + private final PointF mTranslationForReorderBounce = new PointF(0, 0); private final PointF mTranslationForReorderPreview = new PointF(0, 0); private float mScaleForReorderBounce = 1f; @@ -711,6 +713,11 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel @Override public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN + && shouldIgnoreTouchDown(event.getX(), event.getY())) { + return false; + } + // Call the superclass onTouchEvent first, because sometimes it changes the state to // isPressed() on an ACTION_UP super.onTouchEvent(event); @@ -719,6 +726,15 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel return true; } + /** + * Returns true if the touch down at the provided position be ignored + */ + protected boolean shouldIgnoreTouchDown(float x, float y) { + mTouchArea.set(getPaddingLeft(), getPaddingTop(), getWidth() - getPaddingRight(), + getHeight() - getPaddingBottom()); + return !mTouchArea.contains((int) x, (int) y); + } + @Override public void cancelLongPress() { super.cancelLongPress();