···11--- original
22+++ modified
33-@@ -36,7 +36,7 @@
44- use crate::refresh_driver::BaseRefreshDriver;
55- use crate::touch::{PendingTouchInputEvent, TouchHandler, TouchMoveAllowed, TouchSequenceState};
33+@@ -38,7 +38,7 @@
44+ PendingTouchInputEvent, TouchHandler, TouchIdMoveTracking, TouchMoveAllowed, TouchSequenceState,
55+ };
6677-#[derive(Clone, Copy)]
88+#[derive(Clone, Copy, Debug)]
99 pub(crate) struct ScrollEvent {
1010 /// Scroll by this offset, or to Start or End
1111 pub scroll: Scroll,
1212-@@ -73,6 +73,18 @@
1212+@@ -75,6 +75,18 @@
1313 DidNotPinchZoom,
1414 }
1515···2828 /// A renderer for a libservo `WebView`. This is essentially the [`ServoRenderer`]'s interface to a
2929 /// libservo `WebView`, but the code here cannot depend on libservo in order to prevent circular
3030 /// dependencies, which is why we store a `dyn WebViewTrait` here instead of the `WebView` itself.
3131-@@ -114,6 +126,10 @@
3131+@@ -116,6 +128,10 @@
3232 /// and initial values for zoom derived from the `viewport` meta tag in web content.
3333 viewport_description: Option<ViewportDescription>,
3434···3939 //
4040 // Data that is shared with the parent renderer.
4141 //
4242-@@ -152,6 +168,7 @@
4242+@@ -154,6 +170,7 @@
4343 hidden: false,
4444 animating: false,
4545 viewport_description: None,
···4747 embedder_to_constellation_sender,
4848 refresh_driver,
4949 webrender_document,
5050-@@ -187,6 +204,16 @@
5050+@@ -189,6 +206,16 @@
5151 new_value != old_value
5252 }
5353···6464 /// Returns the [`PipelineDetails`] for the given [`PipelineId`], creating it if needed.
6565 pub(crate) fn ensure_pipeline_details(
6666 &mut self,
6767-@@ -362,10 +389,9 @@
6767+@@ -364,10 +391,9 @@
6868 _ => None,
6969 }
7070 .or_else(|| self.hit_test(render_api, point).into_iter().nth(0));
···7878 hit_test_result
7979 },
8080 None => None,
8181-@@ -689,6 +715,88 @@
8181+@@ -699,6 +725,88 @@
8282 self.on_scroll_window_event(scroll, point);
8383 }
8484···167167 fn on_scroll_window_event(&mut self, scroll: Scroll, cursor: DevicePoint) {
168168 self.pending_scroll_zoom_events
169169 .push(ScrollZoomEvent::Scroll(ScrollEvent {
170170-@@ -698,18 +806,25 @@
170170+@@ -708,18 +816,25 @@
171171 }));
172172 }
173173···198198 }
199199200200 // Batch up all scroll events and changes to pinch zoom into a single change, or
201201-@@ -763,15 +878,24 @@
201201+@@ -773,15 +888,24 @@
202202 }
203203 }
204204···229229230230 let scroll_result = combined_scroll_event.and_then(|combined_event| {
231231 self.scroll_node_at_device_point(
232232-@@ -780,6 +904,21 @@
232232+@@ -790,6 +914,21 @@
233233 combined_event.scroll,
234234 )
235235 });
···251251 if let Some(ref scroll_result) = scroll_result {
252252 self.send_scroll_positions_to_layout_for_pipeline(
253253 scroll_result.hit_test_result.pipeline_id,
254254-@@ -795,7 +934,11 @@
254254+@@ -805,7 +944,11 @@
255255 self.send_pinch_zoom_infos_to_script();
256256 }
257257···264264 }
265265266266 /// Perform a hit test at the given [`DevicePoint`] and apply the [`Scroll`]
267267-@@ -802,7 +945,7 @@
267267+@@ -812,7 +955,7 @@
268268 /// scrolling to the applicable scroll node under that point. If a scroll was
269269 /// performed, returns the hit test result contains [`PipelineId`] of the node
270270 /// scrolled, the id, and the final scroll delta.
···273273 &mut self,
274274 render_api: &RenderApi,
275275 cursor: DevicePoint,
276276-@@ -830,7 +973,10 @@
276276+@@ -840,7 +983,10 @@
277277 // its ancestor pipelines.
278278 let mut previous_pipeline_id = None;
279279 for hit_test_result in hit_test_results {
···285285 if previous_pipeline_id.replace(hit_test_result.pipeline_id) !=
286286 Some(hit_test_result.pipeline_id)
287287 {
288288-@@ -857,7 +1003,11 @@
288288+@@ -867,7 +1013,11 @@
289289 }
290290 }
291291 }
···298298 }
299299300300 /// Scroll the viewport (root pipeline, root scroll node) of this WebView, but first
301301-@@ -996,20 +1146,45 @@
301301+@@ -1006,20 +1156,45 @@
302302 }
303303304304 fn send_window_size_message(&self) {
···356356 }
357357358358 /// Set the `hidpi_scale_factor` for this renderer, returning `true` if the value actually changed.
359359-@@ -1075,8 +1250,21 @@
359359+@@ -1085,8 +1260,21 @@
360360 if let Some(wheel_event) = self.pending_wheel_events.remove(&id) {
361361 if !result.contains(InputEventResult::DefaultPrevented) {
362362 // A scroll delta for a wheel event is the inverse of the wheel delta.