⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 179627 in webkit


Ignore:
Timestamp:
Feb 4, 2015, 1:39:00 PM (12 years ago)
Author:
hyatt@apple.com
Message:

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.

Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
https://bugs.webkit.org/show_bug.cgi?id=141207
<rdar://problem/18387659>

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/multicol/table-dynamic-movement.html

Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.

Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
ended up getting marked for relayout.

Make sure rows do the right thing as well.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::positionNewFloats):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::markForPaginationRelayoutIfNeeded):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::layout):

LayoutTests:

  • fast/multicol/table-dynamic-movement-expected.html: Added.
  • fast/multicol/table-dynamic-movement.html: Added.
Location:
trunk
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r179626 r179627  
     12015-02-03  David Hyatt  <hyatt@apple.com>
     2
     3        Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
     4        https://bugs.webkit.org/show_bug.cgi?id=141207
     5        <rdar://problem/18387659>
     6
     7        Reviewed by Dean Jackson.
     8
     9        * fast/multicol/table-dynamic-movement-expected.html: Added.
     10        * fast/multicol/table-dynamic-movement.html: Added.
     11
    1122015-02-04  Said Abou-Hallawa  <sabouhallawa@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r179626 r179627  
     12015-02-03  David Hyatt  <hyatt@apple.com>
     2
     3        Tables don't repaginate properly when the pagination height changes or the pagination offset changes.
     4        https://bugs.webkit.org/show_bug.cgi?id=141207
     5        <rdar://problem/18387659>
     6
     7        Reviewed by Dean Jackson.
     8
     9        Added fast/multicol/table-dynamic-movement.html
     10
     11        Change markForPaginationRelayoutIfNeeded to be called always and to check needsLayout inside it.
     12
     13        Make RenderTable override markForPaginationRelayoutIfNeeded and also dirty the sections if the table
     14        ended up getting marked for relayout.
     15
     16        Make sure rows do the right thing as well.
     17
     18        * rendering/RenderBlock.cpp:
     19        (WebCore::RenderBlock::layoutPositionedObjects):
     20        (WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):
     21        * rendering/RenderBlock.h:
     22        * rendering/RenderBlockFlow.cpp:
     23        (WebCore::RenderBlockFlow::layoutBlockChild):
     24        (WebCore::RenderBlockFlow::adjustBlockChildForPagination):
     25        (WebCore::RenderBlockFlow::positionNewFloats):
     26        * rendering/RenderDeprecatedFlexibleBox.cpp:
     27        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
     28        (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
     29        * rendering/RenderTable.cpp:
     30        (WebCore::RenderTable::markForPaginationRelayoutIfNeeded):
     31        * rendering/RenderTable.h:
     32        * rendering/RenderTableRow.cpp:
     33        (WebCore::RenderTableRow::layout):
     34        * rendering/RenderTableSection.cpp:
     35        (WebCore::RenderTableSection::layout):
     36
    1372015-02-04  Said Abou-Hallawa  <sabouhallawa@apple.com>
    238
  • trunk/Source/WebCore/rendering/RenderBlock.cpp

    r179454 r179627  
    13361336            r.setPreferredLogicalWidthsDirty(true, MarkOnlyThis);
    13371337       
    1338         if (!r.needsLayout())
    1339             r.markForPaginationRelayoutIfNeeded();
     1338        r.markForPaginationRelayoutIfNeeded();
    13401339       
    13411340        // We don't have to do a full layout.  We just have to update our position. Try that first. If we have shrink-to-fit width
     
    13851384void RenderBlock::markForPaginationRelayoutIfNeeded()
    13861385{
    1387     ASSERT(!needsLayout());
    1388     if (needsLayout())
     1386    if (needsLayout() || !view().layoutState()->isPaginated())
    13891387        return;
    13901388
  • trunk/Source/WebCore/rendering/RenderBlock.h

    r179454 r179627  
    115115
    116116    void markPositionedObjectsForLayout();
    117     virtual void markForPaginationRelayoutIfNeeded() override final;
     117    virtual void markForPaginationRelayoutIfNeeded() override;
    118118   
    119119    // FIXME-BLOCKFLOW: Remove virtualizaion when all of the line layout code has been moved out of RenderBlock
  • trunk/Source/WebCore/rendering/RenderBlockFlow.cpp

    r179454 r179627  
    696696    }
    697697
    698     if (!child.needsLayout())
    699         child.markForPaginationRelayoutIfNeeded();
     698    child.markForPaginationRelayoutIfNeeded();
    700699
    701700    bool childHadLayout = child.everHadLayout();
     
    735734            if (!child.avoidsFloats() && childBlockFlow->containsFloats())
    736735                childBlockFlow->markAllDescendantsWithFloatsForLayout();
    737             if (!child.needsLayout())
    738                 child.markForPaginationRelayoutIfNeeded();
     736            child.markForPaginationRelayoutIfNeeded();
    739737        }
    740738    }
     
    15341532            if (!child.avoidsFloats() && childRenderBlock->containsFloats())
    15351533                downcast<RenderBlockFlow>(*childRenderBlock).markAllDescendantsWithFloatsForLayout();
    1536             if (!child.needsLayout())
    1537                 child.markForPaginationRelayoutIfNeeded();
     1534            child.markForPaginationRelayoutIfNeeded();
    15381535        }
    15391536
     
    24512448        estimateRegionRangeForBoxChild(childBox);
    24522449
     2450        childBox.markForPaginationRelayoutIfNeeded();
     2451        childBox.layoutIfNeeded();
     2452       
    24532453        LayoutState* layoutState = view().layoutState();
    24542454        bool isPaginated = layoutState->isPaginated();
    2455         if (isPaginated && !childBox.needsLayout())
    2456             childBox.markForPaginationRelayoutIfNeeded();
    2457        
    2458         childBox.layoutIfNeeded();
    2459 
    24602455        if (isPaginated) {
    24612456            // If we are unsplittable and don't fit, then we need to move down.
  • trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp

    r178510 r179627  
    424424            child->computeAndSetBlockDirectionMargins(this);
    425425
    426             if (!child->needsLayout())
    427                 child->markForPaginationRelayoutIfNeeded();
     426            child->markForPaginationRelayoutIfNeeded();
    428427           
    429428            // Apply the child's current layout delta.
     
    500499                child->setChildNeedsLayout(MarkOnlyThis);
    501500
    502             if (!child->needsLayout())
    503                 child->markForPaginationRelayoutIfNeeded();
     501            child->markForPaginationRelayoutIfNeeded();
    504502
    505503            layoutChildIfNeededApplyingDelta(child, childLayoutDelta);
     
    745743            setHeight(height() + child->marginTop());
    746744
    747             if (!child->needsLayout())
    748                 child->markForPaginationRelayoutIfNeeded();
     745            child->markForPaginationRelayoutIfNeeded();
    749746
    750747            // Now do a layout.
  • trunk/Source/WebCore/rendering/RenderTable.cpp

    r179599 r179627  
    15371537}
    15381538
    1539 }
     1539void RenderTable::markForPaginationRelayoutIfNeeded()
     1540{
     1541    if (!view().layoutState()->isPaginated() || (!view().layoutState()->pageLogicalHeightChanged() && (!view().layoutState()->pageLogicalHeight() || view().layoutState()->pageLogicalOffset(this, logicalTop()) == pageLogicalOffset())))
     1542        return;
     1543   
     1544    // When a table moves, we have to dirty all of the sections too.
     1545    if (!needsLayout())
     1546        setChildNeedsLayout(MarkOnlyThis);
     1547    for (auto& child : childrenOfType<RenderTableSection>(*this)) {
     1548        if (!child.needsLayout())
     1549            child.setChildNeedsLayout(MarkOnlyThis);
     1550    }
     1551}
     1552
     1553}
  • trunk/Source/WebCore/rendering/RenderTable.h

    r177259 r179627  
    276276    LayoutUnit offsetWidthForColumn(const RenderTableCol&) const;
    277277    LayoutUnit offsetHeightForColumn(const RenderTableCol&) const;
    278 
     278   
     279    virtual void markForPaginationRelayoutIfNeeded() override final;
     280   
    279281protected:
    280282    virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override final;
  • trunk/Source/WebCore/rendering/RenderTableRow.cpp

    r177259 r179627  
    169169               
    170170    for (RenderTableCell* cell = firstCell(); cell; cell = cell->nextCell()) {
    171         if (!cell->needsLayout() && paginated && view().layoutState()->pageLogicalHeight() && view().layoutState()->pageLogicalOffset(cell, cell->logicalTop()) != cell->pageLogicalOffset())
     171        if (!cell->needsLayout() && paginated && (view().layoutState()->pageLogicalHeightChanged() || (view().layoutState()->pageLogicalHeight() && view().layoutState()->pageLogicalOffset(cell, cell->logicalTop()) != cell->pageLogicalOffset())))
    172172            cell->setChildNeedsLayout(MarkOnlyThis);
    173173
  • trunk/Source/WebCore/rendering/RenderTableSection.cpp

    r177259 r179627  
    393393
    394394    LayoutStateMaintainer statePusher(view(), *this, locationOffset(), hasTransform() || hasReflection() || style().isFlippedBlocksWritingMode());
    395 
     395    bool paginated = view().layoutState()->isPaginated();
     396   
    396397    const Vector<int>& columnPos = table()->columnPositions();
    397 
     398   
    398399    for (unsigned r = 0; r < m_grid.size(); ++r) {
    399400        Row& row = m_grid[r].row;
     
    418419        }
    419420
    420         if (RenderTableRow* rowRenderer = m_grid[r].rowRenderer)
     421        if (RenderTableRow* rowRenderer = m_grid[r].rowRenderer) {
     422            if (!rowRenderer->needsLayout() && paginated && view().layoutState()->pageLogicalHeightChanged())
     423                rowRenderer->setChildNeedsLayout(MarkOnlyThis);
     424
    421425            rowRenderer->layoutIfNeeded();
     426        }
    422427    }
    423428
Note: See TracChangeset for help on using the changeset viewer.