Skip to content

Commit 6a6e20f

Browse files
authored
Merge pull request #682 from Sharktheone/css/specificity
fix specificity in cascaded value calculation & fix specified value calculation
2 parents f3a447c + 83c33ad commit 6a6e20f

File tree

1 file changed

+5
-20
lines changed

1 file changed

+5
-20
lines changed

crates/gosub_css3/src/matcher/styling.rs

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -446,36 +446,21 @@ impl CssProperty {
446446
}
447447

448448
fn find_cascaded_value(&self) -> Option<CssValue> {
449-
let mut declared = self.declared.clone();
450-
451-
declared.sort();
452-
declared.sort_by(|a, b| {
453-
if a.priority() == b.priority() {
454-
return Ordering::Equal;
455-
}
456-
457-
a.specificity.cmp(&b.specificity)
458-
});
459-
460-
declared.last().map(|d| d.value.clone())
449+
self.declared
450+
.iter()
451+
.max_by(|a, b| a.cmp(b).then_with(|| a.specificity.cmp(&b.specificity)))
452+
.map(|v| v.value.clone())
461453
}
462454

463455
fn find_specified_value(&self) -> CssValue {
464-
match self.declared.iter().max() {
465-
Some(decl) => decl.value.clone(),
466-
None => CssValue::None,
467-
}
456+
self.cascaded.as_ref().unwrap_or(&self.inherited).clone()
468457
}
469458

470459
fn find_computed_value(&self) -> CssValue {
471460
if self.specified != CssValue::None {
472461
return self.specified.clone();
473462
}
474463

475-
if self.inherited != CssValue::None {
476-
return self.inherited.clone();
477-
}
478-
479464
self.get_initial_value().unwrap_or(CssValue::None)
480465
}
481466

0 commit comments

Comments
 (0)