LibWeb: Resolve horizontal auto margins for images with display: block

This commit is contained in:
Andreas Kling 2023-04-29 20:18:01 +02:00
parent f7e034d4b2
commit 5236819f58
Notes: sideshowbarker 2024-07-17 01:28:15 +09:00
3 changed files with 20 additions and 0 deletions

View File

@ -0,0 +1,4 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x116 children: not-inline
BlockContainer <body> at (8,8) content-size 400x100 children: not-inline
ImageBox <img> at (158,8) content-size 100x100 children: not-inline

View File

@ -0,0 +1,11 @@
<!doctype html><style>
body {
width: 400px;
}
img {
margin: 0 auto;
display: block;
width: 100px;
height: 100px;
}
</style><img/>

View File

@ -210,6 +210,11 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const&
};
auto input_width = [&] {
if (is<ReplacedBox>(box)) {
// NOTE: Replaced elements had their width calculated independently above.
// We use that width as the input here to ensure that margins get resolved.
return CSS::Length::make_px(box_state.content_width());
}
if (is<TableWrapper>(box))
return CSS::Length::make_px(compute_width_for_table_wrapper(box, available_space));
if (should_treat_width_as_auto(box, available_space))