Merge "Fixes for touchpad capture" am: c5ea003bbb

am: 6f72ed8b27

Change-Id: I07e2ce2f93a8ed920879759873af4f0f40191b87
This commit is contained in:
Nathaniel R. Lewis
2019-02-25 20:27:54 -08:00
committed by android-build-merger

View File

@@ -4825,11 +4825,8 @@ public final class ViewRootImpl implements ViewParent,
protected int onProcess(QueuedInputEvent q) {
if (q.mEvent instanceof KeyEvent) {
return processKeyEvent(q);
} else {
final int source = q.mEvent.getSource();
if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) {
return processPointerEvent(q);
}
} else if (q.mEvent instanceof MotionEvent) {
return processMotionEvent(q);
}
return FORWARD;
}
@@ -4853,6 +4850,23 @@ public final class ViewRootImpl implements ViewParent,
return FORWARD;
}
private int processMotionEvent(QueuedInputEvent q) {
final MotionEvent event = (MotionEvent) q.mEvent;
if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
return processPointerEvent(q);
}
// If the motion event is from an absolute position device, exit touch mode
final int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_SCROLL) {
if (event.isFromSource(InputDevice.SOURCE_CLASS_POSITION)) {
ensureTouchMode(false);
}
}
return FORWARD;
}
private int processPointerEvent(QueuedInputEvent q) {
final MotionEvent event = (MotionEvent)q.mEvent;
@@ -5185,6 +5199,12 @@ public final class ViewRootImpl implements ViewParent,
private int processGenericMotionEvent(QueuedInputEvent q) {
final MotionEvent event = (MotionEvent)q.mEvent;
if (event.isFromSource(InputDevice.SOURCE_TOUCHPAD)) {
if (hasPointerCapture() && mView.dispatchCapturedPointerEvent(event)) {
return FINISH_HANDLED;
}
}
// Deliver the event to the view.
if (mView.dispatchGenericMotionEvent(event)) {
return FINISH_HANDLED;