From c4c8b3c69597ac5fdd0c29124cb1e5fb70873a55 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 28 Jun 2019 23:17:18 +0000 Subject: Revert "Enable FLAG_SLIPPERY window flag when swipe down on workspace" This reverts commit 35062f8ed32ea4a868be077fdae37409a700e759. Reason for revert: Moving to R1 Change-Id: Ifd19d78015a66c9fbe9a67845232d13e011943d3 --- .../touchcontrollers/StatusBarTouchController.java | 68 ++++++---------------- 1 file changed, 17 insertions(+), 51 deletions(-) (limited to 'quickstep') diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java index f5ba3725d..fee18204e 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java @@ -17,22 +17,17 @@ package com.android.launcher3.uioverrides.touchcontrollers; import static android.view.MotionEvent.ACTION_DOWN; import static android.view.MotionEvent.ACTION_MOVE; -import static android.view.MotionEvent.ACTION_UP; -import static android.view.MotionEvent.ACTION_CANCEL; -import android.graphics.PointF; import android.os.RemoteException; import android.util.Log; -import android.util.SparseArray; import android.view.MotionEvent; import android.view.ViewConfiguration; -import android.view.Window; -import android.view.WindowManager; import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; +import com.android.launcher3.touch.TouchEventTranslator; import com.android.launcher3.util.TouchController; import com.android.quickstep.RecentsModel; import com.android.systemui.shared.recents.ISystemUiProxy; @@ -41,29 +36,18 @@ import java.io.PrintWriter; /** * TouchController for handling touch events that get sent to the StatusBar. Once the - * Once the event delta mDownY passes the touch slop, the events start getting forwarded. + * Once the event delta y passes the touch slop, the events start getting forwarded. * All events are offset by initial Y value of the pointer. */ public class StatusBarTouchController implements TouchController { private static final String TAG = "StatusBarController"; - /** - * Window flag: Enable touches to slide out of a window into neighboring - * windows in mid-gesture instead of being captured for the duration of - * the gesture. - * - * This flag changes the behavior of touch focus for this window only. - * Touches can slide out of the window but they cannot necessarily slide - * back in (unless the other window with touch focus permits it). - */ - private static final int FLAG_SLIPPERY = 0x20000000; - protected final Launcher mLauncher; + protected final TouchEventTranslator mTranslator; private final float mTouchSlop; private ISystemUiProxy mSysUiProxy; private int mLastAction; - private final SparseArray mDownEvents; /* If {@code false}, this controller should not handle the input {@link MotionEvent}.*/ private boolean mCanIntercept; @@ -72,7 +56,7 @@ public class StatusBarTouchController implements TouchController { mLauncher = l; // Guard against TAPs by increasing the touch slop. mTouchSlop = 2 * ViewConfiguration.get(l).getScaledTouchSlop(); - mDownEvents = new SparseArray<>(); + mTranslator = new TouchEventTranslator((MotionEvent ev)-> dispatchTouchEvent(ev)); } @Override @@ -80,6 +64,7 @@ public class StatusBarTouchController implements TouchController { writer.println(prefix + "mCanIntercept:" + mCanIntercept); writer.println(prefix + "mLastAction:" + MotionEvent.actionToString(mLastAction)); writer.println(prefix + "mSysUiProxy available:" + (mSysUiProxy != null)); + } private void dispatchTouchEvent(MotionEvent ev) { @@ -96,31 +81,26 @@ public class StatusBarTouchController implements TouchController { @Override public final boolean onControllerInterceptTouchEvent(MotionEvent ev) { int action = ev.getActionMasked(); - int idx = ev.getActionIndex(); - int pid = ev.getPointerId(idx); if (action == ACTION_DOWN) { mCanIntercept = canInterceptTouch(ev); if (!mCanIntercept) { return false; } - mDownEvents.put(pid, new PointF(ev.getX(), ev.getY())); + mTranslator.reset(); + mTranslator.setDownParameters(0, ev); } else if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) { - // Check!! should only set it only when threshold is not entered. - mDownEvents.put(pid, new PointF(ev.getX(idx), ev.getY(idx))); + // Check!! should only set it only when threshold is not entered. + mTranslator.setDownParameters(ev.getActionIndex(), ev); } if (!mCanIntercept) { return false; } if (action == ACTION_MOVE) { - float dy = ev.getY(idx) - mDownEvents.get(pid).y; - float dx = ev.getX(idx) - mDownEvents.get(pid).x; - // Currently input dispatcher will not do touch transfer if there are more than - // one touch pointer. Hence, even if slope passed, only set the slippery flag - // when there is single touch event. (context: InputDispatcher.cpp line 1445) - if (dy > mTouchSlop && dy > Math.abs(dx) && ev.getPointerCount() == 1) { - ev.setAction(ACTION_DOWN); - dispatchTouchEvent(ev); - setWindowSlippery(true); + float dy = ev.getY() - mTranslator.getDownY(); + float dx = ev.getX() - mTranslator.getDownX(); + if (dy > mTouchSlop && dy > Math.abs(dx)) { + mTranslator.dispatchDownEvents(ev); + mTranslator.processMotionEvent(ev); return true; } if (Math.abs(dx) > mTouchSlop) { @@ -130,27 +110,13 @@ public class StatusBarTouchController implements TouchController { return false; } + @Override public final boolean onControllerTouchEvent(MotionEvent ev) { - if (ev.getAction() == ACTION_UP || ev.getAction() == ACTION_CANCEL) { - dispatchTouchEvent(ev); - setWindowSlippery(false); - return true; - } + mTranslator.processMotionEvent(ev); return true; } - private void setWindowSlippery(boolean enable) { - Window w = mLauncher.getWindow(); - WindowManager.LayoutParams wlp = w.getAttributes(); - if (enable) { - wlp.flags |= FLAG_SLIPPERY; - } else { - wlp.flags &= ~FLAG_SLIPPERY; - } - w.setAttributes(wlp); - } - private boolean canInterceptTouch(MotionEvent ev) { if (!mLauncher.isInState(LauncherState.NORMAL) || AbstractFloatingView.getTopOpenViewWithType(mLauncher, @@ -166,4 +132,4 @@ public class StatusBarTouchController implements TouchController { mSysUiProxy = RecentsModel.INSTANCE.get(mLauncher).getSystemUiProxy(); return mSysUiProxy != null; } -} \ No newline at end of file +} -- cgit v1.2.3