Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9aff88bd authored by Nathaniel R. Lewis's avatar Nathaniel R. Lewis Committed by android-build-merger
Browse files

Merge "Fixes for touchpad capture" am: c5ea003b am: 6f72ed8b

am: 01aa9e81

Change-Id: I2bc16fb5a8fb0eaf5865a5f675d7d4ce978c09f2
parents 7308d63f 01aa9e81
Loading
Loading
Loading
Loading
+25 −5
Original line number Diff line number Diff line
@@ -5277,11 +5277,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;
        }
@@ -5305,6 +5302,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;

@@ -5637,6 +5651,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;