diff options
author | bors-servo <metajack+bors@gmail.com> | 2014-10-14 16:51:30 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2014-10-14 16:51:30 -0600 |
commit | 56989b8dec4aa95a3b484d45f15b23f9b3daaf13 (patch) | |
tree | 91c6c430b9a9513be320bc69d79b63f1523f2af5 /components/layout/css | |
parent | e2d7777c41135b71293c195d2a9d7a1bc2afd0ca (diff) | |
parent | f552e2f7501337fae76ad66401a1e011d00211df (diff) | |
download | servo-56989b8dec4aa95a3b484d45f15b23f9b3daaf13.tar.gz servo-56989b8dec4aa95a3b484d45f15b23f9b3daaf13.zip |
auto merge of #3640 : cgaebel/servo/incremental-flow-construction, r=pcwalton
This also hides the not-yet-working parts of incremental reflow behind a runtime
flag. As I get the failing reftests passing, I'll send pull requests for them one
by one.
Diffstat (limited to 'components/layout/css')
-rw-r--r-- | components/layout/css/node_style.rs | 5 | ||||
-rw-r--r-- | components/layout/css/node_util.rs | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/components/layout/css/node_style.rs b/components/layout/css/node_style.rs index 8512429442a..35bb1b1a8fa 100644 --- a/components/layout/css/node_style.rs +++ b/components/layout/css/node_style.rs @@ -14,6 +14,7 @@ use sync::Arc; /// Node mixin providing `style` method that returns a `NodeStyle` pub trait StyledNode { fn style<'a>(&'a self) -> &'a Arc<ComputedValues>; + fn unstyle(self); fn restyle_damage(self) -> RestyleDamage; fn set_restyle_damage(self, damage: RestyleDamage); } @@ -24,6 +25,10 @@ impl<'ln> StyledNode for ThreadSafeLayoutNode<'ln> { self.get_css_select_results() } + fn unstyle(self) { + self.remove_css_select_results() + } + fn restyle_damage(self) -> RestyleDamage { self.get_restyle_damage() } diff --git a/components/layout/css/node_util.rs b/components/layout/css/node_util.rs index 17d181b9937..c5268abf169 100644 --- a/components/layout/css/node_util.rs +++ b/components/layout/css/node_util.rs @@ -13,6 +13,7 @@ use sync::Arc; pub trait NodeUtil { fn get_css_select_results<'a>(&'a self) -> &'a Arc<ComputedValues>; fn have_css_select_results(&self) -> bool; + fn remove_css_select_results(self); fn get_restyle_damage(self) -> RestyleDamage; fn set_restyle_damage(self, damage: RestyleDamage); @@ -60,6 +61,20 @@ impl<'ln> NodeUtil for ThreadSafeLayoutNode<'ln> { layout_data_ref.as_ref().unwrap().shared_data.style.is_some() } + fn remove_css_select_results(self) { + let mut layout_data_ref = self.mutate_layout_data(); + let layout_data = layout_data_ref.as_mut().expect("no layout data"); + + let style = + match self.get_pseudo_element_type() { + Before(_) => &mut layout_data.data.before_style, + After (_) => &mut layout_data.data.after_style, + Normal => &mut layout_data.shared_data.style, + }; + + *style = None; + } + /// Get the description of how to account for recent style changes. /// This is a simple bitfield and fine to copy by value. fn get_restyle_damage(self) -> RestyleDamage { |