mirror of
https://github.com/servo/servo.git
synced 2025-07-31 19:20:22 +01:00
Auto merge of #17972 - heycam:ignore-existing, r=bholley
style: Allow styles to be computed ignoring existing element data. From https://bugzilla.mozilla.org/show_bug.cgi?id=1384824. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17972) <!-- Reviewable:end -->
This commit is contained in:
commit
ac37f81c1f
8 changed files with 64 additions and 31 deletions
|
@ -391,6 +391,7 @@ pub fn resolve_style<E>(
|
|||
context: &mut StyleContext<E>,
|
||||
element: E,
|
||||
rule_inclusion: RuleInclusion,
|
||||
ignore_existing_style: bool,
|
||||
) -> ElementStyles
|
||||
where
|
||||
E: TElement,
|
||||
|
@ -398,6 +399,7 @@ where
|
|||
use style_resolver::StyleResolverForElement;
|
||||
|
||||
debug_assert!(rule_inclusion == RuleInclusion::DefaultOnly ||
|
||||
ignore_existing_style ||
|
||||
element.borrow_data().map_or(true, |d| !d.has_styles()),
|
||||
"Why are we here?");
|
||||
let mut ancestors_requiring_style_resolution = SmallVec::<[E; 16]>::new();
|
||||
|
@ -408,7 +410,7 @@ where
|
|||
let mut style = None;
|
||||
let mut ancestor = element.traversal_parent();
|
||||
while let Some(current) = ancestor {
|
||||
if rule_inclusion == RuleInclusion::All {
|
||||
if rule_inclusion == RuleInclusion::All && !ignore_existing_style {
|
||||
if let Some(data) = current.borrow_data() {
|
||||
if let Some(ancestor_style) = data.styles.get_primary() {
|
||||
style = Some(ancestor_style.clone());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue