Merge "Fixes for touchpad capture" am: c5ea003bbb
am: 6f72ed8b27
Change-Id: I07e2ce2f93a8ed920879759873af4f0f40191b87
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user