Handle grid track lists that are too large in CalculateRepeatFillCount. Check
for repeat tracks that begin or end past the maximum track limit in
InitRepeatTracks, and handle the possible size mismatch in nsComputedDOMStyle.
This may result in there being fewer than the maximum number of tracks again
after removing empty tracks in a repeat(auto-fit), but only limiting the track
count after removing empty tracks would leave the number of repeat tracks
unbounded (or require a separate limit on just the repeat track count).
Differential Revision: https://phabricator.services.mozilla.com/D76191
This patch takes the flags NS_STATE_GRID_GENERATE_COMPUTED_VALUES and
NS_STATE_FLEX_GENERATE_COMPUTED_VALUES and combines them into a single new
flag that is defined in nsIFrame.h, with accessors.
Differential Revision: https://phabricator.services.mozilla.com/D78978
This patch takes the flags NS_STATE_GRID_GENERATE_COMPUTED_VALUES and
NS_STATE_FLEX_GENERATE_COMPUTED_VALUES and combines them into a single new
flag that is defined in nsIFrame.h, with accessors.
Differential Revision: https://phabricator.services.mozilla.com/D78978
The modifications are all straightforward conversion except the one in
nsMathMLContainerFrame, where it is simplified by calling the equivalent
BuildDisplayListForInline() helper.
Differential Revision: https://phabricator.services.mozilla.com/D78166
These flex / grid's methods are implemented by delegating to
nsContainerFrame's methods. We shouldn't assume they can support more
child list types than the ones supported in nsContainerFrame's methods.
- NoteNewChildren is a helper for flex and grid's AppendFrame and
InsertFrames, and nsContainerFrame::{AppendFrame,InsertFrames} supports
only kPrincipalList and kNoReflowPrincipalList.
- nsContainerFrame::RemoveFrame supports only kPrincipalList and
kNoReflowPrincipalList.
- nsContainerFrame::SetInitialChildList supports only kPrincipalList and
kBackdropList.
Differential Revision: https://phabricator.services.mozilla.com/D77391
This only occurred when a grid with a repeat with multiple values was used.
Also Add crashtests for this case, and update some comments on LineNameMap's
fields while we are here.
Differential Revision: https://phabricator.services.mozilla.com/D71242
I left all the bits that related to grid container, such as setting
aStatus, NS_STATE_GRID_DID_PUSH_ITEMS, and aState.mIter in
nsGridContainerFrame::ReflowRowsInFragmentainer().
Differential Revision: https://phabricator.services.mozilla.com/D68492
We have duplicated ReparentFrame and ReparentFrames define in both
nsBlockFrame and nsGridContainerFrame. We should move them into
nsContainerFrame.
Differential Revision: https://phabricator.services.mozilla.com/D68490
To get the logical content size of a frame, some callers use
GetContentRectRelativeToSelf().Size() and then convert it to
LogicalRect. We really should generalize ContentBSize(), and provide
ContentSize() for such purpose.
Differential Revision: https://phabricator.services.mozilla.com/D68065
Rename fill_idx to fill_start, to indicate it is not a single value but a
range. Also change a numeric_limits<>::max() involving the fill_start to use
decltype() to ensure its type matches that of the auto-generated structure's
field, while we're touching that code.
The test to ensure only a single repeat value is allowed will be removed by a
later commit.
Differential Revision: https://phabricator.services.mozilla.com/D60929
This also means that the result of CalculateRepeatFillCount is specified to be
a number of repetitions of all repeat tracks, not the total number of tracks.
Differential Revision: https://phabricator.services.mozilla.com/D60927
Rename fill_idx to fill_start, to indicate it is not a single value but a
range. Also change a numeric_limits<>::max() involving the fill_start to use
decltype() to ensure its type matches that of the auto-generated structure's
field, while we're touching that code.
The test to ensure only a single repeat value is allowed will be removed by a
later commit.
Differential Revision: https://phabricator.services.mozilla.com/D60929
This also means that the result of CalculateRepeatFillCount is specified to be
a number of repetitions of all repeat tracks, not the total number of tracks.
Differential Revision: https://phabricator.services.mozilla.com/D60927
Both PresShell() and PresContext() are cached in nsIFrame. This
simplifies the setup for the callers to
nsCSSFrameConstructor::CreateContinuingFrame().
Differential Revision: https://phabricator.services.mozilla.com/D66600