mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 08:36:15 +00:00
LibWeb+Base: Re-implement grid track span
Implement span correctly when indicated in the grid-column-start, grid-row-start, etc. CSS properties. Previously it had been implemented as if span was something that went alongside the position property, but actually it seems like if you do 'span 3' in the grid-column-start property, for example, this means it literally spans 3 blocks, and the 3 has nothing to do with position.
This commit is contained in:
committed by
Andreas Kling
parent
86ce1b64f0
commit
236795e931
@@ -5457,20 +5457,14 @@ RefPtr<StyleValue> Parser::parse_grid_track_placement(Vector<ComponentValue> con
|
||||
return {};
|
||||
}
|
||||
|
||||
auto first_grid_track_placement = CSS::GridTrackPlacement();
|
||||
auto has_span = false;
|
||||
if (current_token.to_string() == "span"sv) {
|
||||
has_span = true;
|
||||
tokens.skip_whitespace();
|
||||
current_token = tokens.next_token().token();
|
||||
}
|
||||
if (current_token.is(Token::Type::Number) && current_token.number().is_integer()) {
|
||||
first_grid_track_placement.set_position(static_cast<int>(current_token.number_value()));
|
||||
first_grid_track_placement.set_has_span(has_span);
|
||||
}
|
||||
|
||||
if (!tokens.has_next_token())
|
||||
return GridTrackPlacementStyleValue::create(first_grid_track_placement);
|
||||
if (current_token.is(Token::Type::Number) && current_token.number().is_integer() && !tokens.has_next_token())
|
||||
return GridTrackPlacementStyleValue::create(CSS::GridTrackPlacement(static_cast<int>(current_token.number_value()), has_span));
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -5488,18 +5482,15 @@ RefPtr<StyleValue> Parser::parse_grid_track_placement_shorthand_value(Vector<Com
|
||||
}
|
||||
|
||||
auto calculate_grid_track_placement = [](auto& current_token, auto& tokens) -> CSS::GridTrackPlacement {
|
||||
auto grid_track_placement = CSS::GridTrackPlacement();
|
||||
auto has_span = false;
|
||||
if (current_token.to_string() == "span"sv) {
|
||||
has_span = true;
|
||||
tokens.skip_whitespace();
|
||||
current_token = tokens.next_token().token();
|
||||
}
|
||||
if (current_token.is(Token::Type::Number) && current_token.number().is_integer()) {
|
||||
grid_track_placement.set_position(static_cast<int>(current_token.number_value()));
|
||||
grid_track_placement.set_has_span(has_span);
|
||||
}
|
||||
return grid_track_placement;
|
||||
if (current_token.is(Token::Type::Number) && current_token.number().is_integer())
|
||||
return CSS::GridTrackPlacement(static_cast<int>(current_token.number_value()), has_span);
|
||||
return CSS::GridTrackPlacement();
|
||||
};
|
||||
|
||||
auto first_grid_track_placement = calculate_grid_track_placement(current_token, tokens);
|
||||
|
||||
Reference in New Issue
Block a user