Merge "Fixes for touchpad capture"
am: c5ea003bbb
Change-Id: I27c8f1f58d7824fc57b273d36a01135d78e2b4ec
This commit is contained in:
@@ -4818,11 +4818,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;
|
||||
}
|
||||
@@ -4846,6 +4843,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;
|
||||
|
||||
@@ -5178,6 +5192,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