summaryrefslogtreecommitdiffstats
path: root/servo/components/style/data.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:35:37 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:35:37 +0000
commita90a5cba08fdf6c0ceb95101c275108a152a3aed (patch)
tree532507288f3defd7f4dcf1af49698bcb76034855 /servo/components/style/data.rs
parentAdding debian version 126.0.1-1. (diff)
downloadfirefox-a90a5cba08fdf6c0ceb95101c275108a152a3aed.tar.xz
firefox-a90a5cba08fdf6c0ceb95101c275108a152a3aed.zip
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'servo/components/style/data.rs')
-rw-r--r--servo/components/style/data.rs30
1 files changed, 23 insertions, 7 deletions
diff --git a/servo/components/style/data.rs b/servo/components/style/data.rs
index ceddc5bd20..366318b658 100644
--- a/servo/components/style/data.rs
+++ b/servo/components/style/data.rs
@@ -45,6 +45,9 @@ bitflags! {
/// The former gives us stronger transitive guarantees that allows us to
/// apply the style sharing cache to cousins.
const PRIMARY_STYLE_REUSED_VIA_RULE_NODE = 1 << 2;
+
+ /// Whether this element may have matched rules inside @starting-style.
+ const MAY_HAVE_STARTING_STYLE = 1 << 3;
}
}
@@ -344,22 +347,28 @@ impl ElementData {
let reused_via_rule_node = self
.flags
.contains(ElementDataFlags::PRIMARY_STYLE_REUSED_VIA_RULE_NODE);
+ let may_have_starting_style = self
+ .flags
+ .contains(ElementDataFlags::MAY_HAVE_STARTING_STYLE);
PrimaryStyle {
style: ResolvedStyle(self.styles.primary().clone()),
reused_via_rule_node,
+ may_have_starting_style,
}
}
/// Sets a new set of styles, returning the old ones.
pub fn set_styles(&mut self, new_styles: ResolvedElementStyles) -> ElementStyles {
- if new_styles.primary.reused_via_rule_node {
- self.flags
- .insert(ElementDataFlags::PRIMARY_STYLE_REUSED_VIA_RULE_NODE);
- } else {
- self.flags
- .remove(ElementDataFlags::PRIMARY_STYLE_REUSED_VIA_RULE_NODE);
- }
+ self.flags.set(
+ ElementDataFlags::PRIMARY_STYLE_REUSED_VIA_RULE_NODE,
+ new_styles.primary.reused_via_rule_node,
+ );
+ self.flags.set(
+ ElementDataFlags::MAY_HAVE_STARTING_STYLE,
+ new_styles.primary.may_have_starting_style,
+ );
+
mem::replace(&mut self.styles, new_styles.into())
}
@@ -542,4 +551,11 @@ impl ElementData {
n
}
+
+ /// Returns true if this element data may need to compute the starting style for CSS
+ /// transitions.
+ #[inline]
+ pub fn may_have_starting_style(&self) -> bool {
+ self.flags.contains(ElementDataFlags::MAY_HAVE_STARTING_STYLE)
+ }
}