mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
style: Refactor the per_pseudo map from StyleData to avoid having an option value type.
This make the layout code way clearer.
This commit is contained in:
parent
a604d605ed
commit
61e04df266
7 changed files with 52 additions and 52 deletions
|
@ -666,7 +666,8 @@ pub trait ThreadSafeLayoutNode<'ln> : Clone + Copy + Sized {
|
|||
fn get_before_pseudo(&self) -> Option<Self> {
|
||||
self.borrow_layout_data().unwrap()
|
||||
.style_data.per_pseudo
|
||||
.get(&PseudoElement::Before).unwrap_or(&None).as_ref().map(|style| {
|
||||
.get(&PseudoElement::Before)
|
||||
.map(|style| {
|
||||
self.with_pseudo(PseudoElementType::Before(style.get_box().display))
|
||||
})
|
||||
}
|
||||
|
@ -675,7 +676,8 @@ pub trait ThreadSafeLayoutNode<'ln> : Clone + Copy + Sized {
|
|||
fn get_after_pseudo(&self) -> Option<Self> {
|
||||
self.borrow_layout_data().unwrap()
|
||||
.style_data.per_pseudo
|
||||
.get(&PseudoElement::After).unwrap_or(&None).as_ref().map(|style| {
|
||||
.get(&PseudoElement::After)
|
||||
.map(|style| {
|
||||
self.with_pseudo(PseudoElementType::After(style.get_box().display))
|
||||
})
|
||||
}
|
||||
|
@ -700,11 +702,11 @@ pub trait ThreadSafeLayoutNode<'ln> : Clone + Copy + Sized {
|
|||
fn style(&self) -> Ref<Arc<ComputedValues>> {
|
||||
Ref::map(self.borrow_layout_data().unwrap(), |data| {
|
||||
let style = match self.get_pseudo_element_type() {
|
||||
PseudoElementType::Before(_) => data.style_data.per_pseudo.get(&PseudoElement::Before).unwrap(),
|
||||
PseudoElementType::After(_) => data.style_data.per_pseudo.get(&PseudoElement::After).unwrap(),
|
||||
PseudoElementType::Normal => &data.style_data.style,
|
||||
PseudoElementType::Before(_) => data.style_data.per_pseudo.get(&PseudoElement::Before),
|
||||
PseudoElementType::After(_) => data.style_data.per_pseudo.get(&PseudoElement::After),
|
||||
PseudoElementType::Normal => data.style_data.style.as_ref(),
|
||||
};
|
||||
style.as_ref().unwrap()
|
||||
style.unwrap()
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -713,24 +715,18 @@ pub trait ThreadSafeLayoutNode<'ln> : Clone + Copy + Sized {
|
|||
/// Unlike the version on TNode, this handles pseudo-elements.
|
||||
fn unstyle(self) {
|
||||
let mut data = self.mutate_layout_data().unwrap();
|
||||
let style =
|
||||
match self.get_pseudo_element_type() {
|
||||
PseudoElementType::Before(_) => {
|
||||
match data.style_data.per_pseudo.get_mut(&PseudoElement::Before) {
|
||||
None => return,
|
||||
Some(style) => style,
|
||||
}
|
||||
}
|
||||
PseudoElementType::After(_) => {
|
||||
match data.style_data.per_pseudo.get_mut(&PseudoElement::After) {
|
||||
None => return,
|
||||
Some(style) => style,
|
||||
}
|
||||
}
|
||||
PseudoElementType::Normal => &mut data.style_data.style,
|
||||
};
|
||||
|
||||
*style = None;
|
||||
match self.get_pseudo_element_type() {
|
||||
PseudoElementType::Before(_) => {
|
||||
data.style_data.per_pseudo.remove(&PseudoElement::Before);
|
||||
}
|
||||
PseudoElementType::After(_) => {
|
||||
data.style_data.per_pseudo.remove(&PseudoElement::After);
|
||||
}
|
||||
PseudoElementType::Normal => {
|
||||
data.style_data.style = None;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
fn is_ignorable_whitespace(&self) -> bool;
|
||||
|
@ -953,7 +949,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> for ServoThreadSafeLayoutNode<'ln> {
|
|||
data.per_pseudo.get(&PseudoElement::After).unwrap()
|
||||
};
|
||||
|
||||
return match style.as_ref().unwrap().get_box().content {
|
||||
return match style.as_ref().get_box().content {
|
||||
content::T::Content(ref value) if !value.is_empty() => {
|
||||
TextContent::GeneratedContent((*value).clone())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue