<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[162312] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/162312">162312</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-01-20 00:58:36 -0800 (Mon, 20 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Region based multicol: tall line causes taller multicol container than necessary
https://bugs.webkit.org/show_bug.cgi?id=122550

Source/WebCore:

Detect and report all column breaks, also when there's no pagination strut involved.

This may end up becoming the overall smallest space shortage in some cases,
so we need to report it, to avoid column height over-stretching.

Patch by Morten Stenshorne &lt;mstensho@opera.com&gt; on 2014-01-20
Reviewed by David Hyatt.

Test: fast/multicol/newmulticol/balance10.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::adjustLinePositionForPagination):

LayoutTests:

Patch by Morten Stenshorne &lt;mstensho@opera.com&gt; on 2014-01-20
Reviewed by David Hyatt.

* fast/multicol/newmulticol/balance10-expected.txt: Added.
* fast/multicol/newmulticol/balance10.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolbalance10expectedtxt">trunk/LayoutTests/fast/multicol/newmulticol/balance10-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastmulticolnewmulticolbalance10html">trunk/LayoutTests/fast/multicol/newmulticol/balance10.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (162311 => 162312)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-20 08:57:15 UTC (rev 162311)
+++ trunk/LayoutTests/ChangeLog        2014-01-20 08:58:36 UTC (rev 162312)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-01-20  Morten Stenshorne  &lt;mstensho@opera.com&gt;
+
+        Region based multicol: tall line causes taller multicol container than necessary
+        https://bugs.webkit.org/show_bug.cgi?id=122550
+
+        Reviewed by David Hyatt.
+
+        * fast/multicol/newmulticol/balance10-expected.txt: Added.
+        * fast/multicol/newmulticol/balance10.html: Added.
+
</ins><span class="cx"> 2014-01-19  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed Apple Windows port gardering.
</span></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolbalance10expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/balance10-expected.txt (0 => 162312)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/balance10-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/balance10-expected.txt        2014-01-20 08:58:36 UTC (rev 162312)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+PASS mc.offsetHeight is ref.offsetHeight
+PASS successfullyParsed is true
+
+TEST COMPLETE
+There should be two identical boxes below.
+
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+line
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastmulticolnewmulticolbalance10html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/newmulticol/balance10.html (0 => 162312)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/newmulticol/balance10.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/newmulticol/balance10.html        2014-01-20 08:58:36 UTC (rev 162312)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;auto-height multicol&lt;/title&gt;
+    &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      if (window.testRunner)
+        testRunner.dumpAsText();
+      if (window.internals)
+        internals.settings.setRegionBasedColumnsEnabled(true);
+    &lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;p&gt;There should be two identical boxes below.&lt;/p&gt;
+    &lt;div id=&quot;mc&quot; style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1; line-height:50px; margin:1em; float:left; width:18em; color:olive; background:olive;&quot;&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span style=&quot;line-height:150px;&quot;&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;ref&quot; style=&quot;-webkit-columns:3; columns:3; orphans:1; widows:1; line-height:50px; margin:1em; float:left; width:18em; height:250px; color:olive; background:olive;&quot;&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span style=&quot;line-height:150px;&quot;&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+      &lt;span&gt;line&lt;/span&gt;&lt;br&gt;
+    &lt;/div&gt;
+    &lt;script&gt;
+      shouldBe(&quot;mc.offsetHeight&quot;, &quot;ref.offsetHeight&quot;);
+    &lt;/script&gt;
+    &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (162311 => 162312)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-20 08:57:15 UTC (rev 162311)
+++ trunk/Source/WebCore/ChangeLog        2014-01-20 08:58:36 UTC (rev 162312)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-01-20  Morten Stenshorne  &lt;mstensho@opera.com&gt;
+
+        Region based multicol: tall line causes taller multicol container than necessary
+        https://bugs.webkit.org/show_bug.cgi?id=122550
+
+        Detect and report all column breaks, also when there's no pagination strut involved.
+
+        This may end up becoming the overall smallest space shortage in some cases,
+        so we need to report it, to avoid column height over-stretching.
+
+        Reviewed by David Hyatt.
+
+        Test: fast/multicol/newmulticol/balance10.html
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::adjustLinePositionForPagination):
+
</ins><span class="cx"> 2014-01-19  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GLIB] GVariant floating references are not correctly handled by GRefPtr
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (162311 => 162312)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-01-20 08:57:15 UTC (rev 162311)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-01-20 08:58:36 UTC (rev 162312)
</span><span class="lines">@@ -1557,8 +1557,13 @@
</span><span class="cx">             lineBox-&gt;setPaginationStrut(remainingLogicalHeight);
</span><span class="cx">             lineBox-&gt;setIsFirstAfterPageBreak(true);
</span><span class="cx">         }
</span><del>-    } else if (remainingLogicalHeight == pageLogicalHeight &amp;&amp; lineBox != firstRootBox())
-        lineBox-&gt;setIsFirstAfterPageBreak(true);
</del><ins>+    } else if (remainingLogicalHeight == pageLogicalHeight) {
+        // We're at the very top of a page or column.
+        if (lineBox != firstRootBox())
+            lineBox-&gt;setIsFirstAfterPageBreak(true);
+        if (lineBox != firstRootBox() || offsetFromLogicalTopOfFirstPage())
+            setPageBreak(logicalOffset, lineHeight);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderBlockFlow::setBreakAtLineToAvoidWidow(int lineToBreak)
</span></span></pre>
</div>
</div>

</body>
</html>