mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-15 13:31:54 +00:00
LibWeb: Parse grid track placements closer to spec
This brings parsing of grid-row-* and grid-column-* properties (and their associated shorthands) more inline with spec. Changes: - Only set omitted properties for combined-value shorthands (e.g. `grid-row: a` rather than `grid-row: a / b`) if the single value is `<custom-ident>`. - `[ [ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>? ]`: - Properly resolve `calc`s for `<integer>` that rely on compute-time information. - `[ span && [ <integer [1,∞]> || <custom-ident> ] ]` - Allow `calc`s for `<integer>` - Allow `<custom-ident>` There is still work to be done to properly use these parsed values. Gains us 46 WPT tests.
This commit is contained in:
parent
a424a06d45
commit
36e2d25efa
Notes:
github-actions[bot]
2025-07-08 16:27:31 +00:00
Author: https://github.com/Calme1709
Commit: 36e2d25efa
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5346
Reviewed-by: https://github.com/tcl3 ✅
12 changed files with 153 additions and 171 deletions
|
@ -4528,7 +4528,7 @@ RefPtr<CSSStyleValue const> Parser::parse_grid_track_placement_shorthand_value(P
|
|||
auto parsed_start_value = parse_grid_track_placement(track_start_placement_token_stream);
|
||||
if (parsed_start_value && track_end_placement_tokens.is_empty()) {
|
||||
transaction.commit();
|
||||
if (parsed_start_value->grid_track_placement().has_identifier()) {
|
||||
if (parsed_start_value->grid_track_placement().is_custom_ident()) {
|
||||
auto custom_ident = parsed_start_value.release_nonnull();
|
||||
return ShorthandStyleValue::create(property_id, { start_property, end_property }, { custom_ident, custom_ident });
|
||||
}
|
||||
|
@ -4721,21 +4721,21 @@ RefPtr<CSSStyleValue const> Parser::parse_grid_area_shorthand_value(TokenStream<
|
|||
// that value. Otherwise, it is set to auto.
|
||||
if (column_start_style_value)
|
||||
column_start = column_start_style_value.release_nonnull()->as_grid_track_placement().grid_track_placement();
|
||||
else
|
||||
else if (row_start.is_custom_ident())
|
||||
column_start = row_start;
|
||||
|
||||
// When grid-row-end is omitted, if grid-row-start is a <custom-ident>, grid-row-end is set to that
|
||||
// <custom-ident>; otherwise, it is set to auto.
|
||||
if (row_end_style_value)
|
||||
row_end = row_end_style_value.release_nonnull()->as_grid_track_placement().grid_track_placement();
|
||||
else
|
||||
else if (row_start.is_custom_ident())
|
||||
row_end = row_start;
|
||||
|
||||
// When grid-column-end is omitted, if grid-column-start is a <custom-ident>, grid-column-end is set to
|
||||
// that <custom-ident>; otherwise, it is set to auto.
|
||||
if (column_end_style_value)
|
||||
column_end = column_end_style_value.release_nonnull()->as_grid_track_placement().grid_track_placement();
|
||||
else
|
||||
else if (column_start.is_custom_ident())
|
||||
column_end = column_start;
|
||||
|
||||
transaction.commit();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue