<!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>[178282] releases/WebKitGTK/webkit-2.6</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/178282">178282</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2015-01-12 10:17:52 -0800 (Mon, 12 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/176619">r176619</a> - Twitter avatar moves when hovering/unhovering the &quot;follow&quot; button.
https://bugs.webkit.org/show_bug.cgi?id=139147
rdar://problem/19096508

Reviewed by Simon Fraser.

This patch ensures that the out of flow positioned render boxes (RenderReplaced) do not
get repositioned when their inline box wrappers move.
Ideally, out of flow positioned renderers do not have inline wrappers by the time we start
placing inline boxes, but in certain case (optimized code path for descendantsHaveSameLineHeightAndBaseline()),
they are still part of the inline box tree.
This patch prevents those renderer boxes from getting positioned as part of the inline box placement.
They will get removed later at RenderBlockFlow::computeBlockDirectionPositionsForLine().

Source/WebCore:

Test: fast/inline/out-of-flow-positioned-render-replaced-box-moves.html

* rendering/InlineBox.cpp:
(WebCore::InlineBox::adjustPosition):

LayoutTests:

* fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html: Added.
* fast/inline/out-of-flow-positioned-render-replaced-box-moves.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit26LayoutTestsChangeLog">releases/WebKitGTK/webkit-2.6/LayoutTests/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit26SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.6/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit26SourceWebCorerenderingInlineBoxcpp">releases/WebKitGTK/webkit-2.6/Source/WebCore/rendering/InlineBox.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit26LayoutTestsfastinlineoutofflowpositionedrenderreplacedboxmovesexpectedhtml">releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html</a></li>
<li><a href="#releasesWebKitGTKwebkit26LayoutTestsfastinlineoutofflowpositionedrenderreplacedboxmoveshtml">releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit26LayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.6/LayoutTests/ChangeLog (178281 => 178282)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.6/LayoutTests/ChangeLog        2015-01-12 18:15:07 UTC (rev 178281)
+++ releases/WebKitGTK/webkit-2.6/LayoutTests/ChangeLog        2015-01-12 18:17:52 UTC (rev 178282)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2014-12-01  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        Twitter avatar moves when hovering/unhovering the &quot;follow&quot; button.
+        https://bugs.webkit.org/show_bug.cgi?id=139147
+        rdar://problem/19096508
+
+        Reviewed by Simon Fraser.
+
+        This patch ensures that the out of flow positioned render boxes (RenderReplaced) do not
+        get repositioned when their inline box wrappers move.
+        Ideally, out of flow positioned renderers do not have inline wrappers by the time we start
+        placing inline boxes, but in certain case (optimized code path for descendantsHaveSameLineHeightAndBaseline()),
+        they are still part of the inline box tree.
+        This patch prevents those renderer boxes from getting positioned as part of the inline box placement.
+        They will get removed later at RenderBlockFlow::computeBlockDirectionPositionsForLine().
+
+        * fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html: Added.
+        * fast/inline/out-of-flow-positioned-render-replaced-box-moves.html: Added.
+
</ins><span class="cx"> 2014-11-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Crash when setting 'transition-delay' CSS property to a calculated value
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit26LayoutTestsfastinlineoutofflowpositionedrenderreplacedboxmovesexpectedhtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html (0 => 178282)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves-expected.html        2015-01-12 18:17:52 UTC (rev 178282)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;This tests that when inline content gets changed (width changes), the out of flow positioned element on the same line does not move.&lt;/title&gt;
+&lt;style&gt;
+  h2 {
+    display: inline; 
+    line-height: 300px;
+  }
+
+  img {
+    position: absolute;
+    top: 100px;
+    left: 100px;
+    width: 100px;
+    height: 100px;
+  }
+  
+  button {
+    width: 100px;
+  }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h2&gt;
+    &lt;a&gt;&lt;img src=&quot;foo.png&quot;&gt;foobar&lt;/a&gt;
+  &lt;/h2&gt;
+  &lt;button&gt;button&lt;/button&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit26LayoutTestsfastinlineoutofflowpositionedrenderreplacedboxmoveshtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves.html (0 => 178282)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.6/LayoutTests/fast/inline/out-of-flow-positioned-render-replaced-box-moves.html        2015-01-12 18:17:52 UTC (rev 178282)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;This tests that when inline content gets changed (width changes), the out of flow positioned element on the same line does not move.&lt;/title&gt;
+&lt;style&gt;
+  h2 {
+    display: inline; 
+    line-height: 300px;
+  }
+
+  img {
+    position: absolute;
+    top: 100px;
+    left: 100px;
+    width: 100px;
+    height: 100px;
+  }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h2&gt;
+    &lt;a&gt;&lt;img src=&quot;foo.png&quot;&gt;foobar&lt;/a&gt;
+  &lt;/h2&gt;
+  &lt;button id=changethis&gt;button&lt;/button&gt;
+  &lt;script&gt;
+    if (window.testRunner)
+      testRunner.waitUntilDone();
+    setTimeout(function() { 
+      document.getElementById(&quot;changethis&quot;).style.width = &quot;100px&quot;;
+      if (window.testRunner)
+        testRunner.notifyDone();
+     }, 10);
+  &lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit26SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.6/Source/WebCore/ChangeLog (178281 => 178282)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.6/Source/WebCore/ChangeLog        2015-01-12 18:15:07 UTC (rev 178281)
+++ releases/WebKitGTK/webkit-2.6/Source/WebCore/ChangeLog        2015-01-12 18:17:52 UTC (rev 178282)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2014-12-01  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        Twitter avatar moves when hovering/unhovering the &quot;follow&quot; button.
+        https://bugs.webkit.org/show_bug.cgi?id=139147
+        rdar://problem/19096508
+
+        Reviewed by Simon Fraser.
+
+        This patch ensures that the out of flow positioned render boxes (RenderReplaced) do not
+        get repositioned when their inline box wrappers move.
+        Ideally, out of flow positioned renderers do not have inline wrappers by the time we start
+        placing inline boxes, but in certain case (optimized code path for descendantsHaveSameLineHeightAndBaseline()),
+        they are still part of the inline box tree.
+        This patch prevents those renderer boxes from getting positioned as part of the inline box placement.
+        They will get removed later at RenderBlockFlow::computeBlockDirectionPositionsForLine().
+
+        Test: fast/inline/out-of-flow-positioned-render-replaced-box-moves.html
+
+        * rendering/InlineBox.cpp:
+        (WebCore::InlineBox::adjustPosition):
+
</ins><span class="cx"> 2014-11-26  Philippe Normand  &lt;pnormand@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GStreamer] HTTP source element lacks SCHEDULING query support
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit26SourceWebCorerenderingInlineBoxcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.6/Source/WebCore/rendering/InlineBox.cpp (178281 => 178282)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.6/Source/WebCore/rendering/InlineBox.cpp        2015-01-12 18:15:07 UTC (rev 178281)
+++ releases/WebKitGTK/webkit-2.6/Source/WebCore/rendering/InlineBox.cpp        2015-01-12 18:17:52 UTC (rev 178282)
</span><span class="lines">@@ -176,6 +176,9 @@
</span><span class="cx"> {
</span><span class="cx">     m_topLeft.move(dx, dy);
</span><span class="cx"> 
</span><ins>+    if (m_renderer.isOutOfFlowPositioned())
+        return;
+
</ins><span class="cx">     if (m_renderer.isReplaced())
</span><span class="cx">         toRenderBox(renderer()).move(dx, dy);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>