From 58a9c4b7d2aa3772f56fea32f82cf29d410dc499 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Fri, 5 Aug 2016 13:57:21 -0700 Subject: Pull down should work on search box, even if all apps scroll is not at top. b/30295305 Change-Id: I38bbe47d6e33929c550930c9f157c58fbea203ef --- .../android/launcher3/allapps/AllAppsContainerView.java | 14 ++++++++++---- .../launcher3/allapps/AllAppsTransitionController.java | 2 +- src/com/android/launcher3/dragndrop/DragLayer.java | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index d8601893e..b4ca7eded 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -259,13 +259,19 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc /** * Returns whether the view itself will handle the touch event or not. */ - public boolean shouldContainerScroll(float x, float y) { + public boolean shouldContainerScroll(MotionEvent ev) { int[] point = new int[2]; - point[0] = (int) x; - point[1] = (int) y; + point[0] = (int) ev.getX(); + point[1] = (int) ev.getY(); Utilities.mapCoordInSelfToDescendent(mAppsRecyclerView, this, point); - // if the MotionEvent is inside the thumb, container should not be pulled down. + // IF the MotionEvent is inside the search box, and the container keeps on receiving + // touch input, container should move down. + if (mLauncher.getDragLayer().isEventOverView(mSearchContainer, ev)) { + return true; + } + + // IF the MotionEvent is inside the thumb, container should not be pulled down. if (mAppsRecyclerView.getScrollBar().isNearThumb(point[0], point[1])) { return false; } diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index b0a62e1de..337de46ae 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -111,7 +111,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul if (mLauncher.getWorkspace().isInOverviewMode() || mLauncher.isWidgetsViewVisible()) { mNoIntercept = true; } else if (mLauncher.isAllAppsVisible() && - !mAppsView.shouldContainerScroll(ev.getX(), ev.getY())) { + !mAppsView.shouldContainerScroll(ev)) { mNoIntercept = true; } else if (!mLauncher.isAllAppsVisible() && !shouldPossiblyIntercept(ev)) { mNoIntercept = true; diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java index 448f70943..e88e77e20 100644 --- a/src/com/android/launcher3/dragndrop/DragLayer.java +++ b/src/com/android/launcher3/dragndrop/DragLayer.java @@ -207,7 +207,7 @@ public class DragLayer extends InsettableFrameLayout { return isEventOverView(mLauncher.getDropTargetBar(), ev); } - private boolean isEventOverView(View view, MotionEvent ev) { + public boolean isEventOverView(View view, MotionEvent ev) { getDescendantRectRelativeToSelf(view, mHitRect); return mHitRect.contains((int) ev.getX(), (int) ev.getY()); } -- cgit v1.2.3