diff options
author | Oriol Brufau <obrufau@igalia.com> | 2024-10-31 15:44:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-31 14:44:15 +0000 |
commit | 31566aef02af25625ec2f28d3b108f8e0234b974 (patch) | |
tree | 6795a3021276faf431b9e85dec97394975b2ef09 /components/layout_2020/fragment_tree/fragment_tree.rs | |
parent | 62c79514249ac2c493390e75cd66235bd31942f2 (diff) | |
download | servo-31566aef02af25625ec2f28d3b108f8e0234b974.tar.gz servo-31566aef02af25625ec2f28d3b108f8e0234b974.zip |
Fix geometry queries for floats and replaced inlines (#34083)
APIs like `clientWidth` were returning zero.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Diffstat (limited to 'components/layout_2020/fragment_tree/fragment_tree.rs')
-rw-r--r-- | components/layout_2020/fragment_tree/fragment_tree.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/components/layout_2020/fragment_tree/fragment_tree.rs b/components/layout_2020/fragment_tree/fragment_tree.rs index 5394f08cc33..060e8b4a100 100644 --- a/components/layout_2020/fragment_tree/fragment_tree.rs +++ b/components/layout_2020/fragment_tree/fragment_tree.rs @@ -16,6 +16,7 @@ use super::{ContainingBlockManager, Fragment, Tag}; use crate::cell::ArcRefCell; use crate::display_list::StackingContext; use crate::flow::CanvasBackground; +use crate::fragment_tree::FragmentFlags; use crate::geom::PhysicalRect; #[derive(Serialize)] @@ -134,13 +135,15 @@ impl FragmentTree { } let rect = match fragment { - Fragment::Box(fragment) => { + Fragment::Box(fragment) | Fragment::Float(fragment) => { // https://drafts.csswg.org/cssom-view/#dom-element-clienttop // " If the element has no associated CSS layout box or if the // CSS layout box is inline, return zero." For this check we // also explicitly ignore the list item portion of the display // style. - if fragment.style.get_box().display.is_inline_flow() { + if fragment.style.get_box().display.is_inline_flow() && + !fragment.base.flags.contains(FragmentFlags::IS_REPLACED) + { return Some(Rect::zero()); } |