diff options
author | switchpiggy <alanxiao211@gmail.com> | 2023-05-05 02:32:29 -0700 |
---|---|---|
committer | switchpiggy <alanxiao211@gmail.com> | 2023-05-05 11:13:26 -0700 |
commit | 34762d97ad2bc4bfb22df3477913affcaec76b56 (patch) | |
tree | ff2f65c11c9fcc0965cd305453308ad9570b7477 | |
parent | 7c61c5b9300b25da474f1951402f0ba11b82e216 (diff) | |
download | servo-34762d97ad2bc4bfb22df3477913affcaec76b56.tar.gz servo-34762d97ad2bc4bfb22df3477913affcaec76b56.zip |
fixup! Checks moved to Element::client_rect(), fixed conditions for the special cases, reconfigured Window constructor to initialize current_viewport to initial window size
-rw-r--r-- | components/script/dom/element.rs | 33 | ||||
-rw-r--r-- | components/script/dom/window.rs | 8 |
2 files changed, 14 insertions, 27 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index e7583a2b428..de34eb401e0 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -84,10 +84,8 @@ use crate::dom::window::ReflowReason; use crate::script_thread::ScriptThread; use crate::stylesheet_loader::StylesheetOwner; use crate::task::TaskOnce; -use app_units::Au; use devtools_traits::AttrInfo; use dom_struct::dom_struct; -use euclid::default::Point2D; use euclid::default::Rect; use euclid::default::Size2D; use html5ever::serialize; @@ -3297,26 +3295,21 @@ impl Element { } let mut rect = self.upcast::<Node>().client_rect(); - let owner_doc = self.node.owner_doc(); + let in_quirks_mode = self.node.owner_doc().quirks_mode() == QuirksMode::Quirks; - if (matches!(owner_doc.quirks_mode(), QuirksMode::Quirks) && - owner_doc.GetBody().as_deref() == self.downcast::<HTMLElement>()) || - (matches!(owner_doc.quirks_mode(), QuirksMode::NoQuirks) && - *self.root_element() == *self) + if (in_quirks_mode && + self.node.owner_doc().GetBody().as_deref() == self.downcast::<HTMLElement>()) || + (!in_quirks_mode && *self.root_element() == *self) { - let viewport = owner_doc.window().current_viewport(); - - //cast Rect<Au, _> into Rect<i32, _> - rect = Rect::<i32>::new( - Point2D::<i32>::new( - viewport.origin.x.to_nearest_px(), - viewport.origin.y.to_nearest_px(), - ), - Size2D::<i32>::new( - viewport.size.width.to_nearest_px(), - viewport.size.height.to_nearest_px(), - ), - ); + let viewport_dimensions = self + .node + .owner_doc() + .window() + .window_size() + .initial_viewport + .round() + .to_i32(); + rect.size = Size2D::<i32>::new(viewport_dimensions.width, viewport_dimensions.height); } self.ensure_rare_data().client_rect = Some(window_from_node(self).cache_layout_value(rect)); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index e3237cc9eb4..2364c1c7f72 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -2609,13 +2609,7 @@ impl Window { layout_chan, layout_rpc, window_size: Cell::new(window_size), - current_viewport: Cell::new(Rect::new( - Point2D::zero(), - Size2D::new( - Au::from_f32_px(window_size.initial_viewport.width.into()), - Au::from_f32_px(window_size.initial_viewport.width.into()), - ), - )), + current_viewport: Cell::new(Rect::zero()), suppress_reflow: Cell::new(true), pending_reflow_count: Default::default(), current_state: Cell::new(WindowState::Alive), |