mirror of
https://github.com/servo/servo.git
synced 2025-08-11 16:35:33 +01:00
layout: Add initial support for the ::marker
pseudo-element (#36317)
This change adds support for the `::marker` pseudo-element and ensure that markers are cached into the box tree. This is only initial support, there are a few things missing such as animations, transitions, and support the `content` CSS property. Testing: There are WPT tests for this change. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
a5c547259f
commit
2b63e60e8f
27 changed files with 282 additions and 276 deletions
|
@ -34,6 +34,7 @@ pub struct InnerDOMLayoutData {
|
|||
pub(super) self_box: ArcRefCell<Option<LayoutBox>>,
|
||||
pub(super) pseudo_before_box: ArcRefCell<Option<LayoutBox>>,
|
||||
pub(super) pseudo_after_box: ArcRefCell<Option<LayoutBox>>,
|
||||
pub(super) pseudo_marker_box: ArcRefCell<Option<LayoutBox>>,
|
||||
}
|
||||
|
||||
/// A box that is stored in one of the `DOMLayoutData` slots.
|
||||
|
@ -222,6 +223,7 @@ where
|
|||
let cell = match pseudo_element_type {
|
||||
PseudoElement::Before => &data.pseudo_before_box,
|
||||
PseudoElement::After => &data.pseudo_after_box,
|
||||
PseudoElement::Marker => &data.pseudo_marker_box,
|
||||
_ => unreachable!(
|
||||
"Asked for box slot for unsupported pseudo-element: {:?}",
|
||||
pseudo_element_type
|
||||
|
@ -235,6 +237,7 @@ where
|
|||
let cell = match pseudo_element_type {
|
||||
PseudoElement::Before => &data.pseudo_before_box,
|
||||
PseudoElement::After => &data.pseudo_after_box,
|
||||
PseudoElement::Marker => &data.pseudo_marker_box,
|
||||
_ => unreachable!(
|
||||
"Asked for box slot for unsupported pseudo-element: {:?}",
|
||||
pseudo_element_type
|
||||
|
@ -248,6 +251,7 @@ where
|
|||
*data.self_box.borrow_mut() = None;
|
||||
*data.pseudo_before_box.borrow_mut() = None;
|
||||
*data.pseudo_after_box.borrow_mut() = None;
|
||||
*data.pseudo_marker_box.borrow_mut() = None;
|
||||
// Stylo already takes care of removing all layout data
|
||||
// for DOM descendants of elements with `display: none`.
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue