Bug 1548118 Part 3 - Always mark inner ColumnSetWrapper's children dirty before reflowing it if the outer ColumnSetWrapper is balancing. r=dbaron

ColumnSetFrame always tries to reflow column content regardless of it's
dirtiness. Making ColumnSetWrapperFrame's children dirty can have the
same effect.

Differential Revision: https://phabricator.services.mozilla.com/D29435

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Ting-Yu Lin 2019-05-06 23:09:35 +00:00
Родитель 7c9e81378c
Коммит 0c3d6cd3a5
2 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -3367,6 +3367,15 @@ void nsBlockFrame::ReflowBlockFrame(BlockReflowInput& aState,
cbSize.emplace(LogicalSize(wm, aState.mReflowInput.ComputedISize(),
cbReflowInput->ComputedBSize())
.ConvertTo(frame->GetWritingMode(), wm));
// If a ColumnSetWrapper is in a balancing column content, it may be
// pushed or pulled back and forth between column contents. Always add
// NS_FRAME_HAS_DIRTY_CHILDREN bit to it so that its ColumnSet children
// can have a chance to reflow under current block size constraint.
if (aState.mReflowInput.mFlags.mIsColumnBalancing &&
frame->IsColumnSetWrapperFrame()) {
frame->AddStateBits(NS_FRAME_HAS_DIRTY_CHILDREN);
}
}
blockReflowInput.emplace(

Просмотреть файл

@ -49,5 +49,5 @@ pref(layout.css.column-span.enabled,true) == first-line-first-letter.html first-
# default-enabled (Bug 1426010).
default-preferences pref(layout.css.column-span.enabled,true)
fails == min-width-2.html min-width-2-ref.html # Bug 1548100
fails == column-balancing-nested-001.html column-balancing-nested-001-ref.html # Bug 1548118
== column-balancing-nested-001.html column-balancing-nested-001-ref.html
default-preferences