diff options
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r-- | components/script/dom/window.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 75c7089fac3..8f36193c2eb 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -912,11 +912,13 @@ impl Window { //TODO Step 11 //let document = self.Document(); // Step 12 - self.perform_a_scroll(x.to_f32().unwrap_or(0.0f32), y.to_f32().unwrap_or(0.0f32), behavior, None); + self.perform_a_scroll(x.to_f32().unwrap_or(0.0f32), y.to_f32().unwrap_or(0.0f32), + LayerId::null(), behavior, None); } /// https://drafts.csswg.org/cssom-view/#perform-a-scroll - pub fn perform_a_scroll(&self, x: f32, y: f32, behavior: ScrollBehavior, element: Option<&Element>) { + pub fn perform_a_scroll(&self, x: f32, y: f32, layer_id: LayerId, + behavior: ScrollBehavior, element: Option<&Element>) { //TODO Step 1 let point = Point2D::new(x, y); let smooth = match behavior { @@ -935,7 +937,7 @@ impl Window { self.current_viewport.set(Rect::new(Point2D::new(Au::from_f32_px(x), Au::from_f32_px(y)), size)); self.compositor.send(ScriptToCompositorMsg::ScrollFragmentPoint( - self.pipeline(), LayerId::null(), point, smooth)).unwrap() + self.pipeline(), layer_id, point, smooth)).unwrap() } pub fn client_window(&self) -> (Size2D<u32>, Point2D<i32>) { @@ -1142,6 +1144,21 @@ impl Window { recv.recv().unwrap_or(Point2D::zero()) } + // https://drafts.csswg.org/cssom-view/#dom-element-scroll + pub fn scroll_node(&self, node: TrustedNodeAddress, + x_: f64, y_: f64, behavior: ScrollBehavior) { + + self.reflow(ReflowGoal::ForScriptQuery, + ReflowQueryType::NodeLayerIdQuery(node), + ReflowReason::Query); + + let layer_id = self.layout_rpc.node_layer_id().layer_id; + + // Step 12 + self.perform_a_scroll(x_.to_f32().unwrap_or(0.0f32), y_.to_f32().unwrap_or(0.0f32), + layer_id, behavior, None); + } + pub fn resolved_style_query(&self, element: TrustedNodeAddress, pseudo: Option<PseudoElement>, |