aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/main/css/node_util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/main/css/node_util.rs')
-rw-r--r--src/components/main/css/node_util.rs31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/components/main/css/node_util.rs b/src/components/main/css/node_util.rs
index 2d670129b8f..104174b7b8c 100644
--- a/src/components/main/css/node_util.rs
+++ b/src/components/main/css/node_util.rs
@@ -3,14 +3,13 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use layout::incremental::RestyleDamage;
+use layout::util::LayoutDataAccess;
use std::cast;
-use std::cell::Cell;
use style::ComputedValues;
use script::dom::node::{AbstractNode, LayoutView};
use servo_util::tree::TreeNodeRef;
-
pub trait NodeUtil<'self> {
fn get_css_select_results(self) -> &'self ComputedValues;
fn set_css_select_results(self, decl: ComputedValues);
@@ -29,23 +28,21 @@ impl<'self> NodeUtil<'self> for AbstractNode<LayoutView> {
* stored in a box that can be overwritten
*/
fn get_css_select_results(self) -> &'self ComputedValues {
- do self.read_layout_data |layout_data| {
- match layout_data.style {
- None => fail!(~"style() called on node without a style!"),
- Some(ref style) => unsafe { cast::transmute_region(style) }
- }
+ let layout_data = self.layout_data();
+ match *layout_data.style.borrow().ptr {
+ None => fail!(~"style() called on node without a style!"),
+ Some(ref style) => unsafe { cast::transmute_region(style) }
}
}
/// Does this node have a computed style yet?
fn have_css_select_results(self) -> bool {
- self.read_layout_data(|data| data.style.is_some())
+ self.layout_data().style.borrow().ptr.is_some()
}
/// Update the computed style of an HTML element with a style specified by CSS.
fn set_css_select_results(self, decl: ComputedValues) {
- let cell = Cell::new(decl);
- self.write_layout_data(|data| data.style = Some(cell.take()));
+ *self.layout_data().style.mutate().ptr = Some(decl)
}
/// Get the description of how to account for recent style changes.
@@ -59,15 +56,17 @@ impl<'self> NodeUtil<'self> for AbstractNode<LayoutView> {
RestyleDamage::none()
};
- do self.read_layout_data |layout_data| {
- layout_data.restyle_damage
- .map(|x| RestyleDamage::from_int(x))
- .unwrap_or(default)
- }
+ self.layout_data()
+ .restyle_damage
+ .borrow()
+ .ptr
+ .map(|x| RestyleDamage::from_int(x))
+ .unwrap_or(default)
}
/// Set the restyle damage field.
fn set_restyle_damage(self, damage: RestyleDamage) {
- self.write_layout_data(|data| data.restyle_damage = Some(damage.to_int()));
+ *self.layout_data().restyle_damage.mutate().ptr = Some(damage.to_int())
}
}
+