LibWeb: Stop treating intrinsic size keywords as auto in CSS heights

This commit introduces proper handling of three intrinsic size keywords
when used for CSS heights:

- min-content
- max-content
- fit-content

This necessitated a few plumbing changes, since we can't resolve these
values without having access to containing block widths.

This fixes some visual glitches on https://www.supabase.com/ as well
as a number of WPT tests. It also improves the appearance of dialogs.
This commit is contained in:
Andreas Kling 2024-11-21 17:32:02 +01:00 committed by Andreas Kling
commit fbe9395928
Notes: github-actions[bot] 2024-11-21 18:22:42 +00:00
10 changed files with 120 additions and 104 deletions

View file

@ -2032,7 +2032,7 @@ void GridFormattingContext::run(AvailableSpace const& available_space)
CSSPixels min_height = 0;
if (!grid_computed_values.min_height().is_auto())
min_height = calculate_inner_height(grid_container(), available_space.height, grid_computed_values.min_height());
min_height = calculate_inner_height(grid_container(), available_space, grid_computed_values.min_height());
// If automatic grid container height is less than min-height, we need to re-run the track sizing algorithm
if (m_automatic_content_height < min_height) {
@ -2355,7 +2355,7 @@ CSSPixels GridFormattingContext::calculate_grid_container_maximum_size(GridDimen
auto const& computed_values = grid_container().computed_values();
if (dimension == GridDimension::Column)
return calculate_inner_width(grid_container(), m_available_space->width, computed_values.max_width());
return calculate_inner_height(grid_container(), m_available_space->height, computed_values.max_height());
return calculate_inner_height(grid_container(), m_available_space.value(), computed_values.max_height());
}
CSS::Size const& GridFormattingContext::get_item_preferred_size(GridItem const& item, GridDimension const dimension) const