From 7b1a97c1090076852bc2fb2ce8c6ecffdc2caa83 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Sun, 31 Aug 2025 17:02:24 +0200 Subject: [PATCH] LibWeb: Skip calculating item's min-content size if possible [GFC] We could skip doing item's intrinsic min-content layout if we know for sure that there's no tracks with intrinsic sizing function to distribute the min-content size to. --- Libraries/LibWeb/Layout/GridFormattingContext.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Libraries/LibWeb/Layout/GridFormattingContext.cpp index 687b2c55da2..f3863697075 100644 --- a/Libraries/LibWeb/Layout/GridFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/GridFormattingContext.cpp @@ -942,10 +942,15 @@ void GridFormattingContext::increase_sizes_to_accommodate_spanning_items_crossin spanned_tracks.append(track); }); - auto item_spans_tracks_with_flexible_sizing_function = any_of(spanned_tracks, [](auto& track) { - return track.max_track_sizing_function.is_flexible_length(); - }); - if (item_spans_tracks_with_flexible_sizing_function) + bool item_spans_tracks_with_flexible_sizing_function = false; + bool item_spans_tracks_with_intrinsic_sizing_function = false; + for (auto& track : spanned_tracks) { + if (track.max_track_sizing_function.is_flexible_length()) + item_spans_tracks_with_flexible_sizing_function = true; + if (track.min_track_sizing_function.is_intrinsic(available_size) || track.max_track_sizing_function.is_intrinsic(available_size)) + item_spans_tracks_with_intrinsic_sizing_function = true; + } + if (!item_spans_tracks_with_intrinsic_sizing_function || item_spans_tracks_with_flexible_sizing_function) continue; // 1. For intrinsic minimums: First increase the base size of tracks with an intrinsic min track sizing