Issue #1838 - Part 4: Implement flexbox layout for (column|row)-gap properties

This implements flexbox layout for the gap properties without the refactoring work performed on `nsFlexContainerFrame`.

Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1398483 and https://bugzilla.mozilla.org/show_bug.cgi?id=1454822

This excludes the second part of bug 1454822, the width caching implementation, because it is out of scope and currently causes unstable layout with `writing-mode: vertical-lr` (see bug 1709937).
This commit is contained in:
FranklinDM 2022-04-02 15:56:02 +08:00 • committed by roytam1
commit d0cbf1a74f
2 changed files with 178 additions and 63 deletions

View file

@ -72,6 +72,9 @@ public:
const ReflowInput& aReflowInput,
nsReflowStatus& aStatus) override;
nscoord GetIntrinsicISize(nsRenderingContext* aRenderingContext,
nsLayoutUtils::IntrinsicISizeType aType);
virtual nscoord
GetMinISize(nsRenderingContext* aRenderingContext) override;
virtual nscoord
@ -160,7 +163,9 @@ protected:
nscoord aContentBoxMainSize,
nscoord aAvailableBSizeForContent,
nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker);
const FlexboxAxisTracker& aAxisTracker,
nscoord aMainGapSize,
nscoord aCrossGapSize);
/**
* Checks whether our child-frame list "mFrames" is sorted, using the given
@ -244,6 +249,7 @@ protected:
nscoord aAvailableBSizeForContent,
const nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker,
nscoord aMainGapSize,
nsTArray<nsIFrame*>& aPlaceholders,
mozilla::LinkedList<FlexLine>& aLines);