From 02c4f65e67a30d7d3baaba7f7dd4aedfe7416bed Mon Sep 17 00:00:00 2001 From: Steven Ng Date: Wed, 24 Mar 2021 14:51:19 +0000 Subject: [PATCH] Fix scrolling in WidgetsBottomSheet Popup container shouldn't intercept the scroll event if its child scroll view isn't scrolled to the top yet. Test: manual Bug: 183599207 Change-Id: I434ba5e91b154e9862f22c08cd01c9d459e6707b --- .../launcher3/widget/WidgetsBottomSheet.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/com/android/launcher3/widget/WidgetsBottomSheet.java b/src/com/android/launcher3/widget/WidgetsBottomSheet.java index 2fda86c89c..bbb0d92eac 100644 --- a/src/com/android/launcher3/widget/WidgetsBottomSheet.java +++ b/src/com/android/launcher3/widget/WidgetsBottomSheet.java @@ -26,6 +26,7 @@ import android.util.IntProperty; import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Interpolator; @@ -152,6 +153,19 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable { }); } + @Override + public boolean onControllerInterceptTouchEvent(MotionEvent ev) { + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + mNoIntercept = false; + ScrollView scrollView = findViewById(R.id.widgets_table_scroll_view); + if (getPopupContainer().isEventOverView(scrollView, ev) + && scrollView.getScrollY() > 0) { + mNoIntercept = true; + } + } + return super.onControllerInterceptTouchEvent(ev); + } + protected WidgetCell addItemCell(ViewGroup parent) { WidgetCell widget = (WidgetCell) LayoutInflater.from(getContext()) .inflate(R.layout.widget_cell, parent, false);