From 1f625c966531c4a8081b0fa4967a25e89ed967ed Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Thu, 19 Mar 2015 11:17:48 -0700 Subject: [PATCH] Improve Material ink effects 1) Factors InkWell out of Material so that components can use an ink well without needing the shadow/level machinery. 2) Makes the ink effect move at a different velocity once the tap has actually occurred, converging with the spec. We don't have the right speeds yet, but at least we're approaching the right shape. 3) To support (2), added a primaryPointer attribute to GestureEvents to let authors coorelate gesturetapdown events with later gesturetap events. 4) To support (2), modernized SplashAnimation to used AnimatedValue and friends. 5) Added more constants to view-configuration.dart that match Android. I've also removed the cancelling of the ink effect on scroll. The proper way to do that is to notice that someone in the event chain is listening for scrollstart and delay the beginning of the ink effect for some period of time. R=eseidel@chromium.org Review URL: https://codereview.chromium.org/1019023003 --- .../shell/org/domokit/sky/shell/GestureProvider.java | 6 ++++-- engine/src/flutter/shell/ui/input_event_converter.cc | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/shell/org/domokit/sky/shell/GestureProvider.java b/engine/src/flutter/shell/org/domokit/sky/shell/GestureProvider.java index 2018ff733d..f9e29e9ed9 100644 --- a/engine/src/flutter/shell/org/domokit/sky/shell/GestureProvider.java +++ b/engine/src/flutter/shell/org/domokit/sky/shell/GestureProvider.java @@ -38,9 +38,11 @@ public class GestureProvider implements GestureDetector.OnGestureListener { } private InputEvent createGestureEvent(MotionEvent event) { + int pointerIndex = event.getActionIndex(); GestureData gestureData = new GestureData(); - gestureData.x = event.getX(); - gestureData.y = event.getY(); + gestureData.primaryPointer = event.getPointerId(pointerIndex); + gestureData.x = event.getX(pointerIndex); + gestureData.y = event.getY(pointerIndex); InputEvent inputEvent = new InputEvent(); inputEvent.timeStamp = event.getEventTime(); inputEvent.gestureData = gestureData; diff --git a/engine/src/flutter/shell/ui/input_event_converter.cc b/engine/src/flutter/shell/ui/input_event_converter.cc index bd577fd824..bc890d0dae 100644 --- a/engine/src/flutter/shell/ui/input_event_converter.cc +++ b/engine/src/flutter/shell/ui/input_event_converter.cc @@ -96,6 +96,7 @@ scoped_ptr BuildWebGestureEvent( } if (event->gesture_data) { + web_event->primaryPointer = event->gesture_data->primary_pointer; web_event->x = event->gesture_data->x / device_pixel_ratio; web_event->y = event->gesture_data->y / device_pixel_ratio; }