Diff
Modified: trunk/LayoutTests/ChangeLog (167616 => 167617)
--- trunk/LayoutTests/ChangeLog 2014-04-21 20:16:50 UTC (rev 167616)
+++ trunk/LayoutTests/ChangeLog 2014-04-21 20:20:27 UTC (rev 167617)
@@ -1,3 +1,13 @@
+2014-04-21 David Hyatt <[email protected]>
+
+ [New Multicolumn] Column set drawing under horizontal scrollbar.
+ https://bugs.webkit.org/show_bug.cgi?id=131812.
+
+ Reviewed by Sam Weinig.
+
+ * fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb-expected.html: Added.
+ * fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb.html: Added.
+
2014-04-21 Alexey Proskuryakov <[email protected]>
Update results of fast/images/image-controls-basic.html
Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb-expected.html (0 => 167617)
--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb-expected.html (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb-expected.html 2014-04-21 20:20:27 UTC (rev 167617)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+ body {
+ -webkit-writing-mode: horizontal-tb;
+ }
+ .box {
+ height: 50px;
+ width: 50px;
+ background-color: blue;
+ }
+ .box.changed {
+ background-color: green;
+ }
+ </style>
+ <script>
+ if (window.internals) {
+ internals.setPagination("LeftToRightPaginated", 20, 180);
+ }
+ </script>
+</head>
+<body>
+
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb.html (0 => 167617)
--- trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb.html (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb.html 2014-04-21 20:20:27 UTC (rev 167617)
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+ body {
+ -webkit-writing-mode: horizontal-tb;
+ }
+ .box {
+ height: 50px;
+ width: 50px;
+ background-color: blue;
+ }
+ .box.changed {
+ background-color: green;
+ }
+ </style>
+ <script>
+ if (window.internals) {
+ internals.settings.setRegionBasedColumnsEnabled(true);
+ internals.setPagination("LeftToRightPaginated", 20, 180);
+ }
+ </script>
+</head>
+<body>
+
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+
+
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (167616 => 167617)
--- trunk/Source/WebCore/ChangeLog 2014-04-21 20:16:50 UTC (rev 167616)
+++ trunk/Source/WebCore/ChangeLog 2014-04-21 20:20:27 UTC (rev 167617)
@@ -1,3 +1,25 @@
+2014-04-21 David Hyatt <[email protected]>
+
+ [New Multicolumn] Column set drawing under horizontal scrollbar.
+ https://bugs.webkit.org/show_bug.cgi?id=131812.
+
+ Reviewed by Sam Weinig.
+
+ Added fast/multicol/newmulticol/compare-with-old-impl/LeftToRight-tb.html.
+
+ * rendering/RenderBlockFlow.cpp:
+ (WebCore::RenderBlockFlow::layoutBlock):
+ (WebCore::RenderBlockFlow::checkForPaginationLogicalHeightChange):
+ * rendering/RenderBlockFlow.h:
+ Pass in relayoutChildren as a reference boolean to checkForPaginationLogicalHeightChange.
+ The new columns need to be able to set it to true if the amount of available column
+ height ever changes, so that the RenderFlowThread and the sets get a layout call.
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::setColumnStylesFromPaginationMode):
+ Make sure that the pagination mode is set up with an auto column-fill specified. You
+ don't ever want to balance when you set a pagination mode on the RenderView.
+
2014-04-21 Tim Horton <[email protected]>
[iOS WebKit2] Implement CSS viewport units
Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (167616 => 167617)
--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp 2014-04-21 20:16:50 UTC (rev 167616)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp 2014-04-21 20:20:27 UTC (rev 167617)
@@ -343,7 +343,7 @@
bool pageLogicalHeightChanged = false;
bool hasSpecifiedPageLogicalHeight = false;
- checkForPaginationLogicalHeightChange(pageLogicalHeight, pageLogicalHeightChanged, hasSpecifiedPageLogicalHeight);
+ checkForPaginationLogicalHeightChange(relayoutChildren, pageLogicalHeight, pageLogicalHeightChanged, hasSpecifiedPageLogicalHeight);
const RenderStyle& styleToUse = style();
LayoutStateMaintainer statePusher(view(), *this, locationOffset(), hasColumns() || hasTransform() || hasReflection() || styleToUse.isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged, columnInfo());
@@ -3557,7 +3557,7 @@
RenderBlock::removeChild(oldChild);
}
-void RenderBlockFlow::checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight)
+void RenderBlockFlow::checkForPaginationLogicalHeightChange(bool& relayoutChildren, LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight)
{
// If we don't use either of the two column implementations or a flow thread, then bail.
if (!isRenderFlowThread() && !multiColumnFlowThread() && !hasColumns())
@@ -3568,7 +3568,10 @@
LogicalExtentComputedValues computedValues;
computeLogicalHeight(LayoutUnit(), logicalTop(), computedValues);
LayoutUnit columnHeight = computedValues.m_extent - borderAndPaddingLogicalHeight() - scrollbarLogicalHeight();
+ LayoutUnit oldHeightAvailable = flowThread->columnHeightAvailable();
flowThread->setColumnHeightAvailable(std::max<LayoutUnit>(columnHeight, 0));
+ if (oldHeightAvailable != flowThread->columnHeightAvailable())
+ relayoutChildren = true;
} else if (hasColumns()) {
ColumnInfo* colInfo = columnInfo();
Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (167616 => 167617)
--- trunk/Source/WebCore/rendering/RenderBlockFlow.h 2014-04-21 20:16:50 UTC (rev 167616)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h 2014-04-21 20:20:27 UTC (rev 167617)
@@ -457,7 +457,7 @@
// the flow thread child.
virtual RenderObject* layoutSpecialExcludedChild(bool /*relayoutChildren*/);
- void checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight);
+ void checkForPaginationLogicalHeightChange(bool& relayoutChildren, LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight);
virtual void paintInlineChildren(PaintInfo&, const LayoutPoint&) override;
virtual void paintFloats(PaintInfo&, const LayoutPoint&, bool preservePhase = false) override;
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (167616 => 167617)
--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2014-04-21 20:16:50 UTC (rev 167616)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2014-04-21 20:20:27 UTC (rev 167617)
@@ -1765,7 +1765,9 @@
{
if (paginationMode == Pagination::Unpaginated)
return;
-
+
+ setColumnFill(ColumnFillAuto);
+
switch (paginationMode) {
case Pagination::LeftToRightPaginated:
setColumnAxis(HorizontalColumnAxis);