From cb233feea0a6eb0b6f768406e17f85bd270925c4 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Tue, 18 Feb 2025 11:17:06 +0100 Subject: [PATCH] Issue #2693 - Don't reflow children if they have 0 width. This seems to be the main reason for the reflow storm. --- layout/generic/nsGridContainerFrame.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/layout/generic/nsGridContainerFrame.cpp b/layout/generic/nsGridContainerFrame.cpp index 89352321c4..57b78e810d 100644 --- a/layout/generic/nsGridContainerFrame.cpp +++ b/layout/generic/nsGridContainerFrame.cpp @@ -3793,10 +3793,25 @@ MeasuringReflow(nsIFrame* aChild, nsIFrame::ReflowChildFlags::NoMoveFrame | nsIFrame::ReflowChildFlags::NoSizeView | nsIFrame::ReflowChildFlags::NoDeleteNextInFlowChild; - parent->ReflowChild(aChild, pc, childSize, childRI, wm, - LogicalPoint(wm), nsSize(), flags, childStatus); - parent->FinishReflowChild(aChild, pc, childSize, &childRI, wm, - LogicalPoint(wm), nsSize(), flags); + if (childSize.mBoundingMetrics.width != 0) { + parent->ReflowChild(aChild, + pc, + childSize, + childRI, + wm, + LogicalPoint(wm), + nsSize(), + flags, + childStatus); + parent->FinishReflowChild(aChild, + pc, + childSize, + &childRI, + wm, + LogicalPoint(wm), + nsSize(), + flags); + } #ifdef DEBUG parent->DeleteProperty(nsContainerFrame::DebugReflowingWithInfiniteISize()); #endif