mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Make tree pseudos not precomputed since they are not really anonymous boxes.
This commit is contained in:
parent
4ce3dc7729
commit
cd527733c5
4 changed files with 35 additions and 9 deletions
|
@ -546,6 +546,26 @@ impl PseudoElement {
|
||||||
PseudoElement::Before | PseudoElement::After | PseudoElement::FirstLine | PseudoElement::FirstLetter)
|
PseudoElement::Before | PseudoElement::After | PseudoElement::FirstLine | PseudoElement::FirstLetter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether this pseudo-element is tree pseudo-element.
|
||||||
|
#[inline]
|
||||||
|
pub fn is_tree_pseudo_element(&self) -> bool {
|
||||||
|
match *self {
|
||||||
|
PseudoElement::MozTreeColumn(..) => true,
|
||||||
|
PseudoElement::MozTreeRow(..) => true,
|
||||||
|
PseudoElement::MozTreeSeparator(..) => true,
|
||||||
|
PseudoElement::MozTreeCell(..) => true,
|
||||||
|
PseudoElement::MozTreeIndentation(..) => true,
|
||||||
|
PseudoElement::MozTreeLine(..) => true,
|
||||||
|
PseudoElement::MozTreeTwisty(..) => true,
|
||||||
|
PseudoElement::MozTreeImage(..) => true,
|
||||||
|
PseudoElement::MozTreeCellText(..) => true,
|
||||||
|
PseudoElement::MozTreeCheckbox(..) => true,
|
||||||
|
PseudoElement::MozTreeProgressmeter(..) => true,
|
||||||
|
PseudoElement::MozTreeDropFeedback(..) => true,
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets the flags associated to this pseudo-element, or 0 if it's an
|
/// Gets the flags associated to this pseudo-element, or 0 if it's an
|
||||||
/// anonymous box.
|
/// anonymous box.
|
||||||
pub fn flags(&self) -> u32 {
|
pub fn flags(&self) -> u32 {
|
||||||
|
|
|
@ -46,7 +46,7 @@ impl PseudoElement {
|
||||||
return PseudoElementCascadeType::Eager
|
return PseudoElementCascadeType::Eager
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.is_anon_box() {
|
if self.is_precomputed() {
|
||||||
return PseudoElementCascadeType::Precomputed
|
return PseudoElementCascadeType::Precomputed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ impl PseudoElement {
|
||||||
/// Whether this pseudo-element is precomputed.
|
/// Whether this pseudo-element is precomputed.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_precomputed(&self) -> bool {
|
pub fn is_precomputed(&self) -> bool {
|
||||||
self.is_anon_box()
|
self.is_anon_box() && !self.is_tree_pseudo_element()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Covert non-canonical pseudo-element to canonical one, and keep a
|
/// Covert non-canonical pseudo-element to canonical one, and keep a
|
||||||
|
|
|
@ -94,6 +94,17 @@ impl PseudoElement {
|
||||||
${" | ".join(map(lambda name: "PseudoElement::{}".format(name), EAGER_PSEUDOS))})
|
${" | ".join(map(lambda name: "PseudoElement::{}".format(name), EAGER_PSEUDOS))})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Whether this pseudo-element is tree pseudo-element.
|
||||||
|
#[inline]
|
||||||
|
pub fn is_tree_pseudo_element(&self) -> bool {
|
||||||
|
match *self {
|
||||||
|
% for pseudo in TREE_PSEUDOS:
|
||||||
|
${pseudo_element_variant(pseudo)} => true,
|
||||||
|
% endfor
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets the flags associated to this pseudo-element, or 0 if it's an
|
/// Gets the flags associated to this pseudo-element, or 0 if it's an
|
||||||
/// anonymous box.
|
/// anonymous box.
|
||||||
pub fn flags(&self) -> u32 {
|
pub fn flags(&self) -> u32 {
|
||||||
|
|
|
@ -1983,13 +1983,8 @@ impl CascadeData {
|
||||||
|
|
||||||
let map = match selector.pseudo_element() {
|
let map = match selector.pseudo_element() {
|
||||||
Some(pseudo) if pseudo.is_precomputed() => {
|
Some(pseudo) if pseudo.is_precomputed() => {
|
||||||
if !selector.is_universal() ||
|
debug_assert!(selector.is_universal());
|
||||||
!matches!(origin, Origin::UserAgent) {
|
debug_assert!(matches!(origin, Origin::UserAgent));
|
||||||
// ::-moz-tree selectors may appear in
|
|
||||||
// non-UA sheets (even though they never
|
|
||||||
// match).
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
precomputed_pseudo_element_decls
|
precomputed_pseudo_element_decls
|
||||||
.as_mut()
|
.as_mut()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue