From d2d39cbfc7284b133276dc55afbd3cd37f86bbb7 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Tue, 24 Apr 2018 15:24:21 -0700 Subject: [PATCH] Fix bug where workspace taps were not being sent to WallpaperManager. Bug: 77218814 Change-Id: Ied464f08dce6f96fd3c56aa790f60a2561edcc84 --- src/com/android/launcher3/Workspace.java | 16 +++------------- .../launcher3/touch/WorkspaceTouchListener.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 7ecafdbf72..d2a126f7f7 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -477,7 +477,7 @@ public class Workspace extends PagedView super.onViewAdded(child); } - boolean isTouchActive() { + public boolean isTouchActive() { return mTouchState != TOUCH_STATE_REST; } @@ -974,19 +974,9 @@ public class Workspace extends PagedView @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - switch (ev.getAction() & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: + if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { mXDown = ev.getX(); mYDown = ev.getY(); - break; - case MotionEvent.ACTION_POINTER_UP: - case MotionEvent.ACTION_UP: - if (mTouchState == TOUCH_STATE_REST) { - final CellLayout currentPage = (CellLayout) getChildAt(mCurrentPage); - if (currentPage != null) { - onWallpaperTap(ev); - } - } } return super.onInterceptTouchEvent(ev); } @@ -1443,7 +1433,7 @@ public class Workspace extends PagedView } } - protected void onWallpaperTap(MotionEvent ev) { + public void onWallpaperTap(MotionEvent ev) { final int[] position = mTempXY; getLocationOnScreen(position); diff --git a/src/com/android/launcher3/touch/WorkspaceTouchListener.java b/src/com/android/launcher3/touch/WorkspaceTouchListener.java index 23f55aa17e..9fb8827b03 100644 --- a/src/com/android/launcher3/touch/WorkspaceTouchListener.java +++ b/src/com/android/launcher3/touch/WorkspaceTouchListener.java @@ -17,6 +17,7 @@ package com.android.launcher3.touch; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_DOWN; +import static android.view.MotionEvent.ACTION_POINTER_UP; import static android.view.MotionEvent.ACTION_UP; import static android.view.ViewConfiguration.getLongPressTimeout; @@ -30,6 +31,7 @@ import android.view.View; import android.view.View.OnTouchListener; import com.android.launcher3.AbstractFloatingView; +import com.android.launcher3.CellLayout; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.Workspace; @@ -122,6 +124,17 @@ public class WorkspaceTouchListener implements OnTouchListener, Runnable { // We don't want to handle touch, let workspace handle it as usual. result = false; } + + if (action == ACTION_UP || action == ACTION_POINTER_UP) { + if (!mWorkspace.isTouchActive()) { + final CellLayout currentPage = + (CellLayout) mWorkspace.getChildAt(mWorkspace.getCurrentPage()); + if (currentPage != null) { + mWorkspace.onWallpaperTap(ev); + } + } + } + if (action == ACTION_UP || action == ACTION_CANCEL) { cancelLongPress(); }