aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r--components/script/dom/element.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index e607f27c232..6348bb412a9 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -3372,30 +3372,26 @@ impl<'a> SelectorsElement for DomRoot<Element> {
impl Element {
fn client_rect(&self) -> Rect<i32> {
+ let doc = self.node.owner_doc();
+
if let Some(rect) = self
.rare_data()
.as_ref()
.and_then(|data| data.client_rect.as_ref())
.and_then(|rect| rect.get().ok())
{
- return rect;
+ if doc.needs_reflow().is_none() {
+ return rect;
+ }
}
let mut rect = self.upcast::<Node>().client_rect();
- let in_quirks_mode = self.node.owner_doc().quirks_mode() == QuirksMode::Quirks;
+ let in_quirks_mode = doc.quirks_mode() == QuirksMode::Quirks;
- if (in_quirks_mode &&
- self.node.owner_doc().GetBody().as_deref() == self.downcast::<HTMLElement>()) ||
+ if (in_quirks_mode && doc.GetBody().as_deref() == self.downcast::<HTMLElement>()) ||
(!in_quirks_mode && *self.root_element() == *self)
{
- let viewport_dimensions = self
- .node
- .owner_doc()
- .window()
- .window_size()
- .initial_viewport
- .round()
- .to_i32();
+ let viewport_dimensions = doc.window().window_size().initial_viewport.round().to_i32();
rect.size = Size2D::<i32>::new(viewport_dimensions.width, viewport_dimensions.height);
}