aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorswitchpiggy <alanxiao211@gmail.com>2023-05-05 02:32:29 -0700
committerswitchpiggy <alanxiao211@gmail.com>2023-05-05 11:13:26 -0700
commit34762d97ad2bc4bfb22df3477913affcaec76b56 (patch)
treeff2f65c11c9fcc0965cd305453308ad9570b7477
parent7c61c5b9300b25da474f1951402f0ba11b82e216 (diff)
downloadservo-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.rs33
-rw-r--r--components/script/dom/window.rs8
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),