summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nathaniel R. Lewis <nlewis@gaikai.com> 2019-02-22 17:50:31 -0800
committer android-build-merger <android-build-merger@google.com> 2019-02-22 17:50:31 -0800
commit6f72ed8b27e133bf026040a037b57e0633cda10e (patch)
tree4d8cda109585cbc08cce74a26074326b674dc52b
parentf90d07b1b34bc63dfa7e72035f73680a54787ecc (diff)
parentc5ea003bbbf9ffe35c1249b0c3feee04a1eda956 (diff)
Merge "Fixes for touchpad capture"
am: c5ea003bbb Change-Id: I27c8f1f58d7824fc57b273d36a01135d78e2b4ec
-rw-r--r--core/java/android/view/ViewRootImpl.java30
1 files changed, 25 insertions, 5 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 798401d87b5a..3fe06f10c758 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -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;