mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-07 00:29:15 +00:00
LibWeb: Fix wrong assumption that repeat() is always first track [GFC]
Fixes crashing in https://wpt.live/css/css-grid/grid-definition/grid-auto-fit-columns-001.html
This commit is contained in:
parent
26415d39f7
commit
ee41dbfec3
Notes:
github-actions[bot]
2024-09-09 20:06:22 +00:00
Author: https://github.com/kalenikaliaksandr
Commit: ee41dbfec3
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1348
4 changed files with 109 additions and 6 deletions
|
@ -88,7 +88,7 @@ CSSPixels GridFormattingContext::resolve_definite_track_size(CSS::GridSize const
|
|||
return 0;
|
||||
}
|
||||
|
||||
int GridFormattingContext::count_of_repeated_auto_fill_or_fit_tracks(GridDimension dimension)
|
||||
int GridFormattingContext::count_of_repeated_auto_fill_or_fit_tracks(GridDimension dimension, CSS::ExplicitGridTrack const& repeated_track)
|
||||
{
|
||||
// https://www.w3.org/TR/css-grid-2/#auto-repeat
|
||||
// 7.2.3.2. Repeat-to-fill: auto-fill and auto-fit repetitions
|
||||
|
@ -102,12 +102,11 @@ int GridFormattingContext::count_of_repeated_auto_fill_or_fit_tracks(GridDimensi
|
|||
// content box of its grid container
|
||||
|
||||
auto const& grid_computed_values = grid_container().computed_values();
|
||||
auto const& track_list = dimension == GridDimension::Row ? grid_computed_values.grid_template_rows().track_list() : grid_computed_values.grid_template_columns().track_list();
|
||||
CSSPixels size_of_repeated_tracks = 0;
|
||||
// (treating each track as its max track sizing function if that is definite or its minimum track sizing
|
||||
// function otherwise, flooring the max track sizing function by the min track sizing function if both
|
||||
// are definite, and taking gap into account)
|
||||
auto const& repeat_track_list = track_list.first().repeat().grid_track_size_list().track_list();
|
||||
auto const& repeat_track_list = repeated_track.repeat().grid_track_size_list().track_list();
|
||||
for (auto const& explicit_grid_track : repeat_track_list) {
|
||||
auto const& track_sizing_function = explicit_grid_track;
|
||||
CSSPixels track_size = 0;
|
||||
|
@ -422,7 +421,7 @@ void GridFormattingContext::initialize_grid_tracks_from_definition(GridDimension
|
|||
int repeat_count = 1;
|
||||
if (track_definition.is_repeat()) {
|
||||
if (track_definition.repeat().is_auto_fill() || track_definition.repeat().is_auto_fit())
|
||||
repeat_count = count_of_repeated_auto_fill_or_fit_tracks(dimension);
|
||||
repeat_count = count_of_repeated_auto_fill_or_fit_tracks(dimension, track_definition);
|
||||
else
|
||||
repeat_count = track_definition.repeat().repeat_count();
|
||||
}
|
||||
|
@ -2096,7 +2095,7 @@ void GridFormattingContext::init_grid_lines(GridDimension dimension)
|
|||
} else if (explicit_track.is_repeat()) {
|
||||
int repeat_count = 0;
|
||||
if (explicit_track.repeat().is_auto_fill() || explicit_track.repeat().is_auto_fit())
|
||||
repeat_count = count_of_repeated_auto_fill_or_fit_tracks(dimension);
|
||||
repeat_count = count_of_repeated_auto_fill_or_fit_tracks(dimension, explicit_track);
|
||||
else
|
||||
repeat_count = explicit_track.repeat().repeat_count();
|
||||
auto const& repeat_track = explicit_track.repeat();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue