diff options
author | Glenn Watson <gw@intuitionlibrary.com> | 2014-09-12 14:42:28 +1000 |
---|---|---|
committer | Glenn Watson <gw@intuitionlibrary.com> | 2014-09-13 14:51:07 +1000 |
commit | 6a9001b4fdf471b785f1e8456b1229d3b5590cab (patch) | |
tree | 7bd553195808a7d2dca84862278ff1f1c6bd97f2 /components/layout/construct.rs | |
parent | b64f27b2b69996508eed0a76acc7414a791b1a9e (diff) | |
download | servo-6a9001b4fdf471b785f1e8456b1229d3b5590cab.tar.gz servo-6a9001b4fdf471b785f1e8456b1229d3b5590cab.zip |
Add support for tables that are floated.
Diffstat (limited to 'components/layout/construct.rs')
-rw-r--r-- | components/layout/construct.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs index d48612375d4..14bc61c4148 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -684,7 +684,8 @@ impl<'a, 'b> FlowConstructor<'a, 'b> { /// Builds a flow for a node with `display: table`. This yields a `TableWrapperFlow` with possibly /// other `TableCaptionFlow`s or `TableFlow`s underneath it. - fn build_flow_for_table_wrapper(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { + fn build_flow_for_table_wrapper(&mut self, node: &ThreadSafeLayoutNode, + float_value: float::T) -> ConstructionResult { let fragment = Fragment::new_from_specific_info(node, TableWrapperFragment); let wrapper_flow = box TableWrapperFlow::from_node_and_fragment(node, fragment); let mut wrapper_flow = FlowRef::new(wrapper_flow as Box<Flow>); @@ -734,7 +735,20 @@ impl<'a, 'b> FlowConstructor<'a, 'b> { abs_descendants.push(wrapper_flow.clone()); } } - FlowConstructionResult(wrapper_flow, abs_descendants) + + match float_value { + float::none => { + FlowConstructionResult(wrapper_flow, abs_descendants) + } + float_kind => { + let float_kind = FloatKind::from_property(float_value); + let float_flow = box BlockFlow::float_from_node(self, node, float_kind) as Box<Flow>; + let mut float_flow = FlowRef::new(float_flow); + float_flow.add_new_child(wrapper_flow); + float_flow.finish(self.layout_context); + FlowConstructionResult(float_flow, abs_descendants) + } + } } /// Builds a flow for a node with `display: table-caption`. This yields a `TableCaptionFlow` @@ -858,8 +872,8 @@ impl<'a, 'b> PostorderNodeMutTraversal for FlowConstructor<'a, 'b> { } // Table items contribute table flow construction results. - (display::table, _, _) => { - let construction_result = self.build_flow_for_table_wrapper(node); + (display::table, float_value, _) => { + let construction_result = self.build_flow_for_table_wrapper(node, float_value); node.set_flow_construction_result(construction_result) } |