mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 19:38:12 +00:00
LibWeb: Better handling of floating boxes from inline formatting context
Handle the clear property for floating boxes and add tracking for vertical clearence within an inline formatting context.
This commit is contained in:
parent
fd86509ef8
commit
62f15f94d2
9 changed files with 78 additions and 8 deletions
|
@ -249,7 +249,7 @@ void InlineFormattingContext::generate_line_boxes(LayoutMode layout_mode)
|
|||
case InlineLevelIterator::Item::Type::ForcedBreak: {
|
||||
line_builder.break_line(LineBuilder::ForcedBreak::Yes);
|
||||
if (item.node) {
|
||||
auto introduce_clearance = parent().clear_floating_boxes(*item.node);
|
||||
auto introduce_clearance = parent().clear_floating_boxes(*item.node, *this);
|
||||
if (introduce_clearance == BlockFormattingContext::DidIntroduceClearance::Yes)
|
||||
parent().reset_margin_state();
|
||||
}
|
||||
|
@ -268,8 +268,12 @@ void InlineFormattingContext::generate_line_boxes(LayoutMode layout_mode)
|
|||
break;
|
||||
|
||||
case InlineLevelIterator::Item::Type::FloatingElement:
|
||||
if (is<Box>(*item.node))
|
||||
if (is<Box>(*item.node)) {
|
||||
auto introduce_clearance = parent().clear_floating_boxes(*item.node, *this);
|
||||
if (introduce_clearance == BlockFormattingContext::DidIntroduceClearance::Yes)
|
||||
parent().reset_margin_state();
|
||||
parent().layout_floating_box(static_cast<Layout::Box const&>(*item.node), containing_block(), layout_mode, *m_available_space, 0, &line_builder);
|
||||
}
|
||||
break;
|
||||
|
||||
case InlineLevelIterator::Item::Type::Text: {
|
||||
|
@ -369,4 +373,14 @@ void InlineFormattingContext::determine_height_of_child(Box const& box, Availabl
|
|||
return parent().determine_height_of_child(box, available_space);
|
||||
}
|
||||
|
||||
CSSPixels InlineFormattingContext::vertical_float_clearance() const
|
||||
{
|
||||
return m_vertical_float_clearance;
|
||||
}
|
||||
|
||||
void InlineFormattingContext::set_vertical_float_clearance(CSSPixels vertical_float_clearance)
|
||||
{
|
||||
m_vertical_float_clearance = vertical_float_clearance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue