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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -974,7 +974,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
|
||||
mDropTargetBar.setup(mDragController);
|
||||
|
||||
mAllAppsController.setupViews(mAppsView);
|
||||
mHotseat.setOnInterceptTouchListener(mWorkspace::onInterceptHotseatTouch);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user