mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:27:35 +00:00
LibWeb: Add GridTrack::create_from_definition() in GFC
Introducing method to construct grid track from definition allows to reduce duplication in layout code.
This commit is contained in:
parent
2ebb3639aa
commit
57581735b7
2 changed files with 17 additions and 9 deletions
|
@ -10,6 +10,18 @@
|
|||
|
||||
namespace Web::Layout {
|
||||
|
||||
GridFormattingContext::GridTrack GridFormattingContext::GridTrack::create_from_definition(CSS::ExplicitGridTrack const& definition)
|
||||
{
|
||||
// NOTE: repeat() is expected to be expanded beforehand.
|
||||
VERIFY(!definition.is_repeat());
|
||||
|
||||
if (definition.is_minmax()) {
|
||||
return GridTrack(definition.minmax().min_grid_size(), definition.minmax().max_grid_size());
|
||||
}
|
||||
|
||||
return GridTrack(definition.grid_size());
|
||||
}
|
||||
|
||||
GridFormattingContext::GridFormattingContext(LayoutState& state, Box const& grid_container, FormattingContext* parent)
|
||||
: FormattingContext(Type::Grid, state, grid_container, parent)
|
||||
{
|
||||
|
@ -542,21 +554,15 @@ void GridFormattingContext::initialize_grid_tracks_from_definition(AvailableSpac
|
|||
}
|
||||
for (auto _ = 0; _ < repeat_count; _++) {
|
||||
switch (track_definition.type()) {
|
||||
case CSS::ExplicitGridTrack::Type::Default:
|
||||
case CSS::ExplicitGridTrack::Type::MinMax:
|
||||
tracks.append(GridTrack(track_definition.minmax().min_grid_size(), track_definition.minmax().max_grid_size()));
|
||||
tracks.append(GridTrack::create_from_definition(track_definition));
|
||||
break;
|
||||
case CSS::ExplicitGridTrack::Type::Repeat:
|
||||
for (auto& explicit_grid_track : track_definition.repeat().grid_track_size_list().track_list()) {
|
||||
auto track_sizing_function = explicit_grid_track;
|
||||
if (track_sizing_function.is_minmax())
|
||||
tracks.append(GridTrack(track_sizing_function.minmax().min_grid_size(), track_sizing_function.minmax().max_grid_size()));
|
||||
else
|
||||
tracks.append(GridTrack(track_sizing_function.grid_size()));
|
||||
tracks.append(GridTrack::create_from_definition(explicit_grid_track));
|
||||
}
|
||||
break;
|
||||
case CSS::ExplicitGridTrack::Type::Default:
|
||||
tracks.append(GridTrack(track_definition.grid_size()));
|
||||
break;
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue