mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:47:34 +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 {
|
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)
|
GridFormattingContext::GridFormattingContext(LayoutState& state, Box const& grid_container, FormattingContext* parent)
|
||||||
: FormattingContext(Type::Grid, state, grid_container, 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; _++) {
|
for (auto _ = 0; _ < repeat_count; _++) {
|
||||||
switch (track_definition.type()) {
|
switch (track_definition.type()) {
|
||||||
|
case CSS::ExplicitGridTrack::Type::Default:
|
||||||
case CSS::ExplicitGridTrack::Type::MinMax:
|
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;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Repeat:
|
case CSS::ExplicitGridTrack::Type::Repeat:
|
||||||
for (auto& explicit_grid_track : track_definition.repeat().grid_track_size_list().track_list()) {
|
for (auto& explicit_grid_track : track_definition.repeat().grid_track_size_list().track_list()) {
|
||||||
auto track_sizing_function = explicit_grid_track;
|
tracks.append(GridTrack::create_from_definition(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()));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CSS::ExplicitGridTrack::Type::Default:
|
|
||||||
tracks.append(GridTrack(track_definition.grid_size()));
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,6 +148,8 @@ private:
|
||||||
|
|
||||||
bool is_gap { false };
|
bool is_gap { false };
|
||||||
|
|
||||||
|
static GridTrack create_from_definition(CSS::ExplicitGridTrack const& definition);
|
||||||
|
|
||||||
GridTrack(CSS::GridSize min_track_sizing_function, CSS::GridSize max_track_sizing_function)
|
GridTrack(CSS::GridSize min_track_sizing_function, CSS::GridSize max_track_sizing_function)
|
||||||
: min_track_sizing_function(min_track_sizing_function)
|
: min_track_sizing_function(min_track_sizing_function)
|
||||||
, max_track_sizing_function(max_track_sizing_function)
|
, max_track_sizing_function(max_track_sizing_function)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue