From f99370c2a9cbe340f340a15a5f065166de9f809a Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Fri, 16 Sep 2016 12:03:27 -0700 Subject: Fixing issue where overview->normal workspace mode cannot be done by tapping b/31458165 Because workspaceInModalState makes the VerticalFlingDetector to consume the touch input, click is not detected in Overview mode. Placed pulldown to search behind a feature flag. Change-Id: I31ab69f57944a18e6b264c4f2ed2d0c1175cd940 --- src/com/android/launcher3/Workspace.java | 35 +++++++++++++++------- .../launcher3/util/VerticalFlingDetector.java | 3 ++ 2 files changed, 27 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 0bb8cbfb9..c499beeb3 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -594,18 +594,31 @@ public class Workspace extends PagedView } // Add the first page CellLayout firstPage = insertNewWorkspaceScreen(Workspace.FIRST_SCREEN_ID, 0); - final VerticalFlingDetector detector = new VerticalFlingDetector(mLauncher){ - @Override - public boolean onTouch(View v, MotionEvent ev) { - if (shouldConsumeTouch(v)) return true; - if (super.onTouch(v, ev)) { - mLauncher.startSearch("", false, null, false); + if (FeatureFlags.PULLDOWN_SEARCH) { + firstPage.setOnTouchListener(new VerticalFlingDetector(mLauncher) { + // detect fling when touch started from empty space + @Override + public boolean onTouch(View v, MotionEvent ev) { + if (workspaceInModalState()) return false; + if (shouldConsumeTouch(v)) return true; + if (super.onTouch(v, ev)) { + mLauncher.startSearch("", false, null, false); + } + return false; } - return false; - } - }; - firstPage.setOnTouchListener(detector); - firstPage.setOnInterceptTouchListener(detector); + }); + firstPage.setOnInterceptTouchListener(new VerticalFlingDetector(mLauncher) { + // detect fling when touch started from on top of the icons + @Override + public boolean onTouch(View v, MotionEvent ev) { + if (shouldConsumeTouch(v)) return true; + if (super.onTouch(v, ev)) { + mLauncher.startSearch("", false, null, false); + } + return false; + } + }); + } // Always add a QSB on the first screen. if (qsb == null) { // In transposed layout, we add the QSB in the Grid. As workspace does not touch the diff --git a/src/com/android/launcher3/util/VerticalFlingDetector.java b/src/com/android/launcher3/util/VerticalFlingDetector.java index 5f2b3f3ac..7236c2d1b 100644 --- a/src/com/android/launcher3/util/VerticalFlingDetector.java +++ b/src/com/android/launcher3/util/VerticalFlingDetector.java @@ -79,6 +79,9 @@ public class VerticalFlingDetector implements View.OnTouchListener { } private void cleanUp() { + if (mVelocityTracker == null) { + return; + } mVelocityTracker.recycle(); mVelocityTracker = null; } -- cgit v1.2.3