Fix subtle bugs in sky-scrollable
Previously the scrollbar wasn't constrained to the scrollable element and we
had messed up the math on the fling curve.
TBR=eseidel@chromium.org
Review URL: https://codereview.chromium.org/947303003
diff --git a/sky/framework/fling-curve.dart b/sky/framework/fling-curve.dart
index 6a476d7..3a9f54f 100644
--- a/sky/framework/fling-curve.dart
+++ b/sky/framework/fling-curve.dart
@@ -36,7 +36,7 @@
FlingCurve(double velocity, double startTime) {
double startingVelocity = math.min(_kMaxVelocity, velocity.abs());
- _timeOffset = _velocityAtTime(startingVelocity);
+ _timeOffset = _timeAtVelocity(startingVelocity);
_positionOffset = _positionAtTime(_timeOffset);
_startTime = startTime / 1000.0;
_previousPosition = 0.0;
diff --git a/sky/framework/sky-drawer.sky b/sky/framework/sky-drawer.sky
index 9a54caa..906f4f4 100644
--- a/sky/framework/sky-drawer.sky
+++ b/sky/framework/sky-drawer.sky
@@ -19,7 +19,7 @@
right: 0;
}
#content {
- background-color: yellow;
+ background-color: white;
will-change: transform;
position: absolute;
width: 256px;
diff --git a/sky/framework/sky-scrollable.sky b/sky/framework/sky-scrollable.sky
index fa287a0..3e41d88 100644
--- a/sky/framework/sky-scrollable.sky
+++ b/sky/framework/sky-scrollable.sky
@@ -11,6 +11,7 @@
:host {
overflow: hidden;
position: relative;
+ will-change: transform;
}
#scrollable {
will-change: transform;
diff --git a/sky/viewer/converters/input_event_types.cc b/sky/viewer/converters/input_event_types.cc
index d5bb31e..3aa297d 100644
--- a/sky/viewer/converters/input_event_types.cc
+++ b/sky/viewer/converters/input_event_types.cc
@@ -108,10 +108,10 @@
break;
case mojo::EVENT_TYPE_SCROLL_FLING_START:
web_event->type = blink::WebInputEvent::GestureFlingStart;
- // TODO(abarth): Why don't we need to divide by the device_pixel_ratio
- // here? For some reason, this seems to get the right velocity.
- web_event->data.flingStart.velocityX = event->gesture_data->velocity_x;
- web_event->data.flingStart.velocityY = event->gesture_data->velocity_y;
+ web_event->data.flingStart.velocityX =
+ event->gesture_data->velocity_x / device_pixel_ratio;
+ web_event->data.flingStart.velocityY =
+ event->gesture_data->velocity_y / device_pixel_ratio;
break;
case mojo::EVENT_TYPE_SCROLL_FLING_CANCEL:
web_event->type = blink::WebInputEvent::GestureFlingCancel;