mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Auto merge of #14978 - shinglyu:inline-flex, r=notriddle
Implemented display: inline-flex <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #14685 (github issue number if applicable). <!-- Either: --> - [x] There are tests for these changes <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14978) <!-- Reviewable:end -->
This commit is contained in:
commit
c75946c3ed
9 changed files with 28 additions and 26 deletions
|
@ -937,9 +937,14 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
|
|||
ConstructionResult::ConstructionItem(construction_item)
|
||||
}
|
||||
|
||||
fn build_fragment_for_inline_block(&mut self, node: &ConcreteThreadSafeLayoutNode)
|
||||
-> ConstructionResult {
|
||||
let block_flow_result = self.build_flow_for_block(node, None);
|
||||
/// Build the fragment for an inline-block or inline-flex, based on the `display` flag
|
||||
fn build_fragment_for_inline_block_or_inline_flex(&mut self, node: &ConcreteThreadSafeLayoutNode,
|
||||
display: display::T) -> ConstructionResult {
|
||||
let block_flow_result = match display {
|
||||
display::T::inline_block => self.build_flow_for_block(node, None),
|
||||
display::T::inline_flex => self.build_flow_for_flex(node, None),
|
||||
_ => panic!("The flag should be inline-block or inline-flex")
|
||||
};
|
||||
let (block_flow, abs_descendants) = match block_flow_result {
|
||||
ConstructionResult::Flow(block_flow, abs_descendants) => (block_flow, abs_descendants),
|
||||
_ => unreachable!()
|
||||
|
@ -1548,7 +1553,8 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS
|
|||
|
||||
// Inline-block items contribute inline fragment construction results.
|
||||
(display::T::inline_block, float::T::none, _) => {
|
||||
let construction_result = self.build_fragment_for_inline_block(node);
|
||||
let construction_result = self.build_fragment_for_inline_block_or_inline_flex(node,
|
||||
display::T::inline_block);
|
||||
self.set_flow_construction_result(node, construction_result)
|
||||
}
|
||||
|
||||
|
@ -1597,6 +1603,12 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS
|
|||
self.set_flow_construction_result(node, construction_result)
|
||||
}
|
||||
|
||||
(display::T::inline_flex, _, _) => {
|
||||
let construction_result = self.build_fragment_for_inline_block_or_inline_flex(node,
|
||||
display::T::inline_flex);
|
||||
self.set_flow_construction_result(node, construction_result)
|
||||
}
|
||||
|
||||
// Block flows that are not floated contribute block flow construction results.
|
||||
//
|
||||
// TODO(pcwalton): Make this only trigger for blocks and handle the other `display`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue