mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:27:44 +00:00
LibWeb: Call prepare_for_replaced_layout() on replaced boxes in GFC
We need to call prepare_for_replaced_layout() on grid items to populate their natural sizes and aspect ration.
This commit is contained in:
parent
a559dca816
commit
549dee4db1
3 changed files with 28 additions and 0 deletions
11
Tests/LibWeb/Layout/expected/grid/replaced-item-1.txt
Normal file
11
Tests/LibWeb/Layout/expected/grid/replaced-item-1.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
|
||||||
|
BlockContainer <html> at (0,0) content-size 800x516 [BFC] children: not-inline
|
||||||
|
BlockContainer <body> at (8,8) content-size 784x500 children: not-inline
|
||||||
|
Box <div.grid> at (8,8) content-size 100x500 [GFC] children: not-inline
|
||||||
|
ImageBox <img> at (8,8) content-size 500x500 children: not-inline
|
||||||
|
|
||||||
|
ViewportPaintable (Viewport<#document>) [0,0 800x600]
|
||||||
|
PaintableWithLines (BlockContainer<HTML>) [0,0 800x516]
|
||||||
|
PaintableWithLines (BlockContainer<BODY>) [8,8 784x500]
|
||||||
|
PaintableBox (Box<DIV>.grid) [8,8 100x500] overflow: [8,8 500x500]
|
||||||
|
ImagePaintable (ImageBox<IMG>) [8,8 500x500]
|
10
Tests/LibWeb/Layout/input/grid/replaced-item-1.html
Normal file
10
Tests/LibWeb/Layout/input/grid/replaced-item-1.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html><style>
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
</style><div class="grid"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAIAAABEtEjdAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QQECx8meCw3kgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAFZklEQVR42u3UQREAAAjDsIFypKMAA1wioY9WJgA80xIAmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQOYuwQA5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAJg7gLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAJg7AOYOYO4AmDsA5g6AuQNg7gDmDoC5A2DuAJg7AOYOgLkDmDsA5g6AuQNg7gCYO4C5A2DuAJg7AOYOgLkDYO4A5g6AuQNg7gCYOwDmDmDuAJg7AOYOgLkDYO4AmDuAuQNg7gCYOwDmDoC5A5g7AOYOgLkDYO4AmDsA5g5g7gCYOwDmDoC5A2DuAOYOgLkDYO4AmDsA5g6AuQOYOwDmDoC5A2DuAFwWxxAEaFFcQbAAAAAASUVORK5CYII="/></div>
|
|
@ -8,6 +8,7 @@
|
||||||
#include <LibWeb/DOM/Node.h>
|
#include <LibWeb/DOM/Node.h>
|
||||||
#include <LibWeb/Layout/Box.h>
|
#include <LibWeb/Layout/Box.h>
|
||||||
#include <LibWeb/Layout/GridFormattingContext.h>
|
#include <LibWeb/Layout/GridFormattingContext.h>
|
||||||
|
#include <LibWeb/Layout/ReplacedBox.h>
|
||||||
|
|
||||||
namespace Web::Layout {
|
namespace Web::Layout {
|
||||||
|
|
||||||
|
@ -1845,6 +1846,12 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
|
||||||
box_state.set_indefinite_content_width();
|
box_state.set_indefinite_content_width();
|
||||||
if (!computed_values.height().is_length())
|
if (!computed_values.height().is_length())
|
||||||
box_state.set_indefinite_content_height();
|
box_state.set_indefinite_content_height();
|
||||||
|
|
||||||
|
if (item.box->is_replaced_box()) {
|
||||||
|
auto& replaced_box = static_cast<Layout::ReplacedBox const&>(*item.box);
|
||||||
|
// FIXME: This const_cast is gross.
|
||||||
|
const_cast<Layout::ReplacedBox&>(replaced_box).prepare_for_replaced_layout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the first pass of resolving grid items box metrics to compute values that are independent of a track width
|
// Do the first pass of resolving grid items box metrics to compute values that are independent of a track width
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue