Title: [178931] branches/safari-600.5-branch

Diff

Modified: branches/safari-600.5-branch/LayoutTests/ChangeLog (178930 => 178931)


--- branches/safari-600.5-branch/LayoutTests/ChangeLog	2015-01-22 20:01:24 UTC (rev 178930)
+++ branches/safari-600.5-branch/LayoutTests/ChangeLog	2015-01-22 20:03:25 UTC (rev 178931)
@@ -1,5 +1,22 @@
 2015-01-22  Matthew Hanson  <matthew_han...@apple.com>
 
+        Merge r176285. rdar://problem/19452164
+
+    2014-11-18  Myles C. Maxfield  <lithe...@gmail.com>
+
+            Multicolumn layout with negative line spacing and orphans causes pieces of letters to be shown at the bottom of columns
+            https://bugs.webkit.org/show_bug.cgi?id=138204
+
+            Reviewed by Dave Hyatt.
+
+            Create a layout where the "orphans" css property causes a block element to
+            be pushed to the next column.
+
+            * fast/multicol/orphans-negative-line-spacing-expected.html: Added.
+            * fast/multicol/orphans-negative-line-spacing.html: Added.
+
+2015-01-22  Matthew Hanson  <matthew_han...@apple.com>
+
         Merge r175131. rdar://problem/19452187
 
     2014-10-23  Jer Noble  <jer.no...@apple.com>

Added: branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing-expected.html (0 => 178931)


--- branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing-expected.html	                        (rev 0)
+++ branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing-expected.html	2015-01-22 20:03:25 UTC (rev 178931)
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+    if (window.internals)
+        internals.setPagination("LeftToRightPaginated", 0);
+</script>
+</head>
+<body>
+<div style="height: 35px;">
+This test makes sure that orphans get pushed to the next page correctly in paginated content. The test fails if you
+see little bits of black at the bottom of the window. (But you should see two giant paragraphs of Ahem text)
+</div>
+<div style="font: 20px ahem; line-height: 50%; orphans: 5;">
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc in ornare enim, quis condimentum ipsum. Pellentesque eu pretium urna, ac fringilla felis. Etiam eros massa, posuere at efficitur id, interdum at est. Fusce nec purus purus. Fusce dignissim lorem tortor, ut sollicitudin augue malesuada et. Pellentesque malesuada iaculis elit a consequat. Aliquam erat volutpat. Mauris quis est non velit iaculis porttitor. Donec a mauris id risus elementum tincidunt. Donec fermentum ipsum ac cursus iaculis. Curabitur vitae nisi tortor. Donec sit amet posuere odio, a viverra ipsum. Nulla sit amet mauris finibus metus accumsan tempus nec et quam. Mauris non convallis nisl, quis finibus leo. Etiam lacinia eros vitae est dapibus tempor.</p>
+<p>Nullam quis est vel mauris volutpat luctus. Morbi eget libero feugiat, lacinia tellus nec, auctor nulla. Suspendisse potenti. Vestibulum lobortis et sapien eu consequat. Aenean dui tellus, dapibus quis ante vel, dictum finibus ipsum. Cras eu risus malesuada, maximus nisl ultrices, placerat velit. Donec egestas, libero ut feugiat pretium, quam ligula rhoncus tortor, tempus hendrerit nulla tortor vel sem. Integer lacinia, nisi sed lobortis tincidunt, tortor mauris tincidunt leo, eu lacinia leo augue eu arcu. Donec ultricies vel arcu eget bibendum. Vestibulum placerat, lectus quis sagittis maximus, mi arcu pharetra massa, nec posuere dolor tortor nec erat. Proin luctus pharetra augue sed tincidunt. Fusce non mauris pharetra, viverra libero in, porttitor libero. Nam nibh magna, faucibus id erat eu, ornare maximus odio. Suspendisse bibendum augue hendrerit, vehicula est nec, porttitor libero. Cras eget augue non urna consectetur feugiat. Nulla eget fringilla dui.</p&g
 t;
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p>Suspendisse id fermentum dolor. Sed vestibulum metus sit amet dictum faucibus. In interdum sapien turpis, viverra sagittis justo consequat eu. Nullam lacinia lacus convallis felis sodales, id luctus quam sodales. Nunc sit amet elit quis libero placerat aliquet eu in massa. Morbi blandit urna urna, id tincidunt quam porta sed. Suspendisse sagittis ex aliquam congue luctus. Nunc tincidunt erat vel dui blandit, sit amet blandit augue pulvinar. Nullam efficitur nulla sit amet arcu rutrum consectetur. Suspendisse pretium lectus lectus, vitae sagittis ante auctor ac. Praesent ut arcu ac eros imperdiet rhoncus. Sed imperdiet bibendum pretium. Etiam ornare libero nulla, vitae interdum nunc interdum at.</p>
+</div>
+</body>
+<html>
+

Added: branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing.html (0 => 178931)


--- branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing.html	                        (rev 0)
+++ branches/safari-600.5-branch/LayoutTests/fast/multicol/orphans-negative-line-spacing.html	2015-01-22 20:03:25 UTC (rev 178931)
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+    if (window.internals)
+        internals.setPagination("LeftToRightPaginated", 0);
+</script>
+</head>
+<body>
+<div style="height: 35px;">
+This test makes sure that orphans get pushed to the next page correctly in paginated content. The test fails if you
+see little bits of black at the bottom of the window. (But you should see two giant paragraphs of Ahem text)
+</div>
+<div style="font: 20px ahem; line-height: 50%; orphans: 5;">
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc in ornare enim, quis condimentum ipsum. Pellentesque eu pretium urna, ac fringilla felis. Etiam eros massa, posuere at efficitur id, interdum at est. Fusce nec purus purus. Fusce dignissim lorem tortor, ut sollicitudin augue malesuada et. Pellentesque malesuada iaculis elit a consequat. Aliquam erat volutpat. Mauris quis est non velit iaculis porttitor. Donec a mauris id risus elementum tincidunt. Donec fermentum ipsum ac cursus iaculis. Curabitur vitae nisi tortor. Donec sit amet posuere odio, a viverra ipsum. Nulla sit amet mauris finibus metus accumsan tempus nec et quam. Mauris non convallis nisl, quis finibus leo. Etiam lacinia eros vitae est dapibus tempor.</p>
+<p>Nullam quis est vel mauris volutpat luctus. Morbi eget libero feugiat, lacinia tellus nec, auctor nulla. Suspendisse potenti. Vestibulum lobortis et sapien eu consequat. Aenean dui tellus, dapibus quis ante vel, dictum finibus ipsum. Cras eu risus malesuada, maximus nisl ultrices, placerat velit. Donec egestas, libero ut feugiat pretium, quam ligula rhoncus tortor, tempus hendrerit nulla tortor vel sem. Integer lacinia, nisi sed lobortis tincidunt, tortor mauris tincidunt leo, eu lacinia leo augue eu arcu. Donec ultricies vel arcu eget bibendum. Vestibulum placerat, lectus quis sagittis maximus, mi arcu pharetra massa, nec posuere dolor tortor nec erat. Proin luctus pharetra augue sed tincidunt. Fusce non mauris pharetra, viverra libero in, porttitor libero. Nam nibh magna, faucibus id erat eu, ornare maximus odio. Suspendisse bibendum augue hendrerit, vehicula est nec, porttitor libero. Cras eget augue non urna consectetur feugiat. Nulla eget fringilla dui.</p&g
 t;
+<p>Suspendisse id fermentum dolor. Sed vestibulum metus sit amet dictum faucibus. In interdum sapien turpis, viverra sagittis justo consequat eu. Nullam lacinia lacus convallis felis sodales, id luctus quam sodales. Nunc sit amet elit quis libero placerat aliquet eu in massa. Morbi blandit urna urna, id tincidunt quam porta sed. Suspendisse sagittis ex aliquam congue luctus. Nunc tincidunt erat vel dui blandit, sit amet blandit augue pulvinar. Nullam efficitur nulla sit amet arcu rutrum consectetur. Suspendisse pretium lectus lectus, vitae sagittis ante auctor ac. Praesent ut arcu ac eros imperdiet rhoncus. Sed imperdiet bibendum pretium. Etiam ornare libero nulla, vitae interdum nunc interdum at.</p>
+</div>
+</body>
+<html>
+

Modified: branches/safari-600.5-branch/Source/WebCore/ChangeLog (178930 => 178931)


--- branches/safari-600.5-branch/Source/WebCore/ChangeLog	2015-01-22 20:01:24 UTC (rev 178930)
+++ branches/safari-600.5-branch/Source/WebCore/ChangeLog	2015-01-22 20:03:25 UTC (rev 178931)
@@ -1,5 +1,30 @@
 2015-01-22  Matthew Hanson  <matthew_han...@apple.com>
 
+        Merge r176285. rdar://problem/19452164
+
+    2014-11-18  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+            Multicolumn layout with negative line spacing and orphans causes pieces of letters to be shown at the bottom of columns
+            https://bugs.webkit.org/show_bug.cgi?id=138204
+
+            Reviewed by Dave Hyatt.
+
+            This code is responsible for pushing block elements to the next column if
+            the "orphans" CSS property is triggered. The mechanism by which this is
+            achieved is to push the block down such that the origin of the block is
+            at the origin of the next column. However, if there is negative line
+            spacing, the top portion of the text might actually be on top of the
+            origin of the block. Therefore, the block wasn't being pushed down enough
+            to entirely contain its text, so the top pieces were being drawn on the
+            previous column.
+
+            Test: fast/multicol/orphans-negative-line-spacing.html
+
+            * rendering/RenderBlockFlow.cpp:
+            (WebCore::RenderBlockFlow::adjustLinePositionForPagination):
+
+2015-01-22  Matthew Hanson  <matthew_han...@apple.com>
+
         Merge r175771. rdar://problem/19451238
 
     2014-11-07  Alexey Proskuryakov  <a...@apple.com>

Modified: branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockFlow.cpp (178930 => 178931)


--- branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockFlow.cpp	2015-01-22 20:01:24 UTC (rev 178930)
+++ branches/safari-600.5-branch/Source/WebCore/rendering/RenderBlockFlow.cpp	2015-01-22 20:03:25 UTC (rev 178931)
@@ -1681,9 +1681,12 @@
         LayoutUnit pageLogicalHeightAtNewOffset = hasUniformPageLogicalHeight ? pageLogicalHeight : pageLogicalHeightForOffset(logicalOffset + remainingLogicalHeight);
         setPageBreak(logicalOffset, lineHeight - remainingLogicalHeight);
         if (((lineBox == firstRootBox() && totalLogicalHeight < pageLogicalHeightAtNewOffset) || (!style().hasAutoOrphans() && style().orphans() >= lineIndex))
-            && !isOutOfFlowPositioned() && !isTableCell())
-            setPaginationStrut(remainingLogicalHeight + std::max<LayoutUnit>(0, logicalOffset));
-        else {
+            && !isOutOfFlowPositioned() && !isTableCell()) {
+            auto firstRootBox = this->firstRootBox();
+            auto firstRootBoxOverflowRect = firstRootBox->logicalVisualOverflowRect(firstRootBox->lineTop(), firstRootBox->lineBottom());
+            auto firstLineUpperOverhang = std::max(-firstRootBoxOverflowRect.y(), LayoutUnit());
+            setPaginationStrut(remainingLogicalHeight + logicalOffset + firstLineUpperOverhang);
+        } else {
             delta += remainingLogicalHeight;
             lineBox->setPaginationStrut(remainingLogicalHeight);
             lineBox->setIsFirstAfterPageBreak(true);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to