Do a full touch dispach when proxying touch

> Workspace can no longer be scrolled when swipin on hotseat

Bug: 130027168
Change-Id: Ie4621e5b7de8d7248227b25fb065249d0c252090
This commit is contained in:
Sunny Goyal
2019-04-09 11:52:49 -07:00
parent deb7cd54e7
commit d158097cfd
5 changed files with 15 additions and 16 deletions
@@ -136,17 +136,13 @@ public class OverviewInputConsumer<T extends BaseDraggingActivity>
}
private void sendEvent(MotionEvent ev) {
if (mInvalidated || !mTarget.verifyTouchDispatch(this, ev)) {
mInvalidated = true;
if (mInvalidated) {
return;
}
int flags = ev.getEdgeFlags();
ev.setEdgeFlags(flags | Utilities.EDGE_NAV_BAR);
ev.offsetLocation(-mLocationOnScreen[0], -mLocationOnScreen[1]);
if (ev.getAction() == ACTION_DOWN) {
mTarget.onInterceptTouchEvent(ev);
}
mTarget.onTouchEvent(ev);
mInvalidated = !mTarget.dispatchTouchEvent(this, ev);
ev.offsetLocation(mLocationOnScreen[0], mLocationOnScreen[1]);
ev.setEdgeFlags(flags);
}
+7
View File
@@ -20,6 +20,7 @@ import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewDebug;
import android.view.ViewGroup;
@@ -98,4 +99,10 @@ public class Hotseat extends CellLayout implements LogContainerProvider, Insetta
setLayoutParams(lp);
InsettableFrameLayout.dispatchInsets(this, insets);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Don't let if follow through to workspace
return true;
}
}
-1
View File
@@ -974,7 +974,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
mDropTargetBar.setup(mDragController);
mAllAppsController.setupViews(mAppsView);
mHotseat.setOnInterceptTouchListener(mWorkspace::onInterceptHotseatTouch);
}
/**
-7
View File
@@ -475,13 +475,6 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
super.onViewAdded(child);
}
protected boolean onInterceptHotseatTouch(View v, MotionEvent ev) {
// We don't want any clicks to go through to the hotseat unless the workspace is in
// the normal state or an accessible drag is in progress.
return !workspaceIconsCanBeDragged()
&& !mLauncher.getAccessibilityDelegate().isInAccessibleDrag();
}
/**
* Initializes and binds the first page
* @param qsb an existing qsb to recycle or null.
@@ -223,14 +223,18 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return verifyTouchDispatch(this, ev) && super.dispatchTouchEvent(ev);
return dispatchTouchEvent(this, ev);
}
public boolean dispatchTouchEvent(Object caller, MotionEvent ev) {
return verifyTouchDispatch(caller, ev) && super.dispatchTouchEvent(ev);
}
/**
* Returns true if the {@param caller} is allowed to dispatch {@param ev} on this view,
* false otherwise.
*/
public boolean verifyTouchDispatch(Object caller, MotionEvent ev) {
private boolean verifyTouchDispatch(Object caller, MotionEvent ev) {
int action = ev.getAction();
if (action == ACTION_DOWN) {
if (mCurrentTouchOwner != null) {