diff --git a/src/servo/layout/flow.rs b/src/servo/layout/flow.rs index 3d3e5d98d75..9aec0a0959d 100644 --- a/src/servo/layout/flow.rs +++ b/src/servo/layout/flow.rs @@ -10,7 +10,7 @@ use layout::block::BlockFlowData; use layout::box::{LogicalBefore, LogicalAfter, RenderBox}; use layout::context::LayoutContext; use layout::debug::BoxedDebugMethods; -use layout::inline::InlineFlowData; +use layout::inline::{InlineFlowData, NodeRange}; use layout::root::RootFlowData; use util::range::{Range, MutableRange}; use util::tree; @@ -179,11 +179,9 @@ impl BoxConsumer { // only create NodeRanges for non-leaf nodes. let final_span_length = self.flow.inline().boxes.len() - entry.start_idx + 1; assert final_span_length > 1; - let mapping = { node: copy box.d().node, - range: MutableRange(entry.start_idx, final_span_length) - }; - debug!("BoxConsumer: adding element range=%?", mapping.range); - self.flow.inline().elems.push(move mapping); + let new_range = Range(entry.start_idx, final_span_length); + debug!("BoxConsumer: adding element range=%?", new_range); + self.flow.inline().elems.push(NodeRange::new(copy box.d().node, move new_range)); }, @BlockFlow(*) => { assert self.stack.len() == 0; diff --git a/src/servo/layout/inline.rs b/src/servo/layout/inline.rs index 2e282f35bad..97d0e6e5efa 100644 --- a/src/servo/layout/inline.rs +++ b/src/servo/layout/inline.rs @@ -41,7 +41,16 @@ serve as the starting point, but the current design doesn't make it hard to try out that alternative. */ -type NodeRange = {node: Node, range: MutableRange}; +struct NodeRange { + node: Node, + mut range: Range, +} + +impl NodeRange { + static pure fn new(node: Node, range: Range) -> NodeRange { + NodeRange { node: node, range: range } + } +} // stack-allocated object for scanning an inline flow into // TextRun-containing TextBoxes. @@ -305,7 +314,7 @@ impl LineboxScanner { while repair_stack.len() > 0 && old_i == elems[repair_stack.last().elem_idx].range.end() { let item = repair_stack.pop(); debug!("Set range for %u to %?", item.elem_idx, Range(item.begin_idx, new_j)); - elems[item.elem_idx].range.reset(item.begin_idx, new_j); + elems[item.elem_idx].range = Range(item.begin_idx, new_j); } old_i += 1; } @@ -314,7 +323,7 @@ impl LineboxScanner { while repair_stack.len() > 0 && old_i == elems[repair_stack.last().elem_idx].range.end() { let item = repair_stack.pop(); debug!("Set range for %u to %?", item.elem_idx, Range(item.begin_idx, new_j)); - elems[item.elem_idx].range.reset(item.begin_idx, new_j); + elems[item.elem_idx].range = Range(item.begin_idx, new_j); } } }