<!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>[200845] releases/WebKitGTK/webkit-2.12</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/200845">200845</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2016-05-13 05:14:22 -0700 (Fri, 13 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/200220">r200220</a> - Content disappears on mouse over.
https://bugs.webkit.org/show_bug.cgi?id=157073
&lt;rdar://problem/24389168&gt;

Reviewed by Simon Fraser.

When a redundant inlinebox is found after constructing the line, we remove it from the tree.
The remove operation marks the ancestor tree dirty (and this newly constructed line is supposed to be clean).
This patch resets this dirty flag on the boxes all the way up to the rootlinebox.
Previously we only cleared the rootinlinebox and we ended up with dirty inlineflowboxes.

Source/WebCore:

Test: fast/text/text-node-remains-dirty-after-calling-surroundContents.html

* rendering/BidiRun.h:
(WebCore::BidiRun::setBox):
* rendering/RenderBlockFlow.h:
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::constructLine):
(WebCore::RenderBlockFlow::removeLineBoxIfNeeded):
(WebCore::RenderBlockFlow::computeBlockDirectionPositionsForLine):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::positionLineBox): Deleted.
* rendering/RenderText.cpp:
(WebCore::RenderText::setText):
(WebCore::RenderText::positionLineBox): Deleted.

LayoutTests:

* fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html: Added.
* fast/text/text-node-remains-dirty-after-calling-surroundContents.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit212LayoutTestsChangeLog">releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCorerenderingBidiRunh">releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/BidiRun.h</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBlockFlowh">releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBlockLineLayoutcpp">releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockLineLayout.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBoxcpp">releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit212SourceWebCorerenderingRenderTextcpp">releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderText.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit212LayoutTestsfasttexttextnoderemainsdirtyaftercallingsurroundContentsexpectedhtml">releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html</a></li>
<li><a href="#releasesWebKitGTKwebkit212LayoutTestsfasttexttextnoderemainsdirtyaftercallingsurroundContentshtml">releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit212LayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2016-04-28  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        Content disappears on mouse over.
+        https://bugs.webkit.org/show_bug.cgi?id=157073
+        &lt;rdar://problem/24389168&gt;
+
+        Reviewed by Simon Fraser.
+
+        When a redundant inlinebox is found after constructing the line, we remove it from the tree.
+        The remove operation marks the ancestor tree dirty (and this newly constructed line is supposed to be clean).
+        This patch resets this dirty flag on the boxes all the way up to the rootlinebox.
+        Previously we only cleared the rootinlinebox and we ended up with dirty inlineflowboxes.
+
+        * fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html: Added.
+        * fast/text/text-node-remains-dirty-after-calling-surroundContents.html: Added.
+
</ins><span class="cx"> 2016-04-28  Joanmarie Diggs  &lt;jdiggs@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: [ATK] We need to be smarter about flattening and the accessible text implementation
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212LayoutTestsfasttexttextnoderemainsdirtyaftercallingsurroundContentsexpectedhtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html (0 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents-expected.html        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;This tests that the span content gets properly laid out after calling surroundContents.&lt;/title&gt;
+&lt;style&gt;
+span {
+        font-family: -apple-system;
+        font-size: 12px;
+    margin-right: 2px;
+    text-decoration: underline;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;span&gt;foobar&lt;/span&gt;
+&lt;br&gt;PASS if foobar gets underlined while hovering.
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit212LayoutTestsfasttexttextnoderemainsdirtyaftercallingsurroundContentshtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents.html (0 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/fast/text/text-node-remains-dirty-after-calling-surroundContents.html        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;This tests that the span content gets properly laid out after calling surroundContents.&lt;/title&gt;
+&lt;style&gt;
+span {
+        font-family: -apple-system;
+        font-size: 12px;
+    margin-right: 2px;
+}
+
+.highlight {
+    text-decoration: underline;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;span id=container&gt;foobar &lt;/span&gt;
+&lt;br&gt;PASS if foobar gets underlined while hovering.
+&lt;script&gt;
+    var container = document.getElementById(&quot;container&quot;);
+    var range = document.createRange();
+    var newspan = document.createElement(&quot;span&quot;);
+    newspan.className = &quot;highlight&quot;; 
+
+    range.selectNodeContents(document.getElementById(&quot;container&quot;).firstChild);
+    range.setEnd(document.getElementById(&quot;container&quot;).firstChild, 6);
+    range.surroundContents(newspan);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2016-04-28  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        Content disappears on mouse over.
+        https://bugs.webkit.org/show_bug.cgi?id=157073
+        &lt;rdar://problem/24389168&gt;
+
+        Reviewed by Simon Fraser.
+
+        When a redundant inlinebox is found after constructing the line, we remove it from the tree.
+        The remove operation marks the ancestor tree dirty (and this newly constructed line is supposed to be clean).
+        This patch resets this dirty flag on the boxes all the way up to the rootlinebox.
+        Previously we only cleared the rootinlinebox and we ended up with dirty inlineflowboxes.
+
+        Test: fast/text/text-node-remains-dirty-after-calling-surroundContents.html
+
+        * rendering/BidiRun.h:
+        (WebCore::BidiRun::setBox):
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlockFlow::constructLine):
+        (WebCore::RenderBlockFlow::removeLineBoxIfNeeded):
+        (WebCore::RenderBlockFlow::computeBlockDirectionPositionsForLine):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::positionLineBox): Deleted.
+        * rendering/RenderText.cpp:
+        (WebCore::RenderText::setText):
+        (WebCore::RenderText::positionLineBox): Deleted.
+
</ins><span class="cx"> 2016-04-28  Joanmarie Diggs  &lt;jdiggs@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: [ATK] We need to be smarter about flattening and the accessible text implementation
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCorerenderingBidiRunh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/BidiRun.h (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/BidiRun.h        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/BidiRun.h        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">     BidiRun* next() { return static_cast&lt;BidiRun*&gt;(m_next); }
</span><span class="cx">     RenderObject&amp; renderer() { return m_renderer; }
</span><span class="cx">     InlineBox* box() { return m_box; }
</span><del>-    void setBox(InlineBox&amp; box) { m_box = &amp;box; }
</del><ins>+    void setBox(InlineBox* box) { m_box = box; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RenderObject&amp; m_renderer;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockFlow.h (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockFlow.h        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockFlow.h        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -603,6 +603,8 @@
</span><span class="cx"> #endif
</span><span class="cx">     virtual void setSelectionState(SelectionState) override final;
</span><span class="cx"> 
</span><ins>+    void removeInlineBox(BidiRun&amp;, const RootInlineBox&amp;) const;
+
</ins><span class="cx"> public:
</span><span class="cx">     // FIXME-BLOCKFLOW: These can be made protected again once all callers have been moved here.
</span><span class="cx">     void adjustLinePositionForPagination(RootInlineBox*, LayoutUnit&amp; deltaOffset, bool&amp; overflowsRegion, RenderFlowThread*); // Computes a deltaOffset value that put a line at the top of the next page if it doesn't fit on the current page.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockLineLayout.cpp (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         InlineBox* box = createInlineBoxForRenderer(&amp;r-&gt;renderer(), false, isOnlyRun);
</span><del>-        r-&gt;setBox(*box);
</del><ins>+        r-&gt;setBox(box);
</ins><span class="cx"> 
</span><span class="cx">         if (!rootHasSelectedChildren &amp;&amp; box-&gt;renderer().selectionState() != RenderObject::SelectionNone)
</span><span class="cx">             rootHasSelectedChildren = true;
</span><span class="lines">@@ -896,36 +896,68 @@
</span><span class="cx">     return run;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RenderBlockFlow::removeInlineBox(BidiRun&amp; run, const RootInlineBox&amp; rootLineBox) const
+{
+    auto* inlineBox = run.box();
+#if !ASSERT_DISABLED
+    auto* inlineParent = inlineBox-&gt;parent();
+    while (inlineParent &amp;&amp; inlineParent != &amp;rootLineBox) {
+        ASSERT(!inlineParent-&gt;isDirty());
+        inlineParent = inlineParent-&gt;parent();
+    }
+    ASSERT(!rootLineBox.isDirty());
+#endif
+    auto* parent = inlineBox-&gt;parent();
+    inlineBox-&gt;removeFromParent();
+
+    auto&amp; renderer = run.renderer();
+    if (is&lt;RenderText&gt;(renderer))
+        downcast&lt;RenderText&gt;(renderer).removeTextBox(downcast&lt;InlineTextBox&gt;(*inlineBox));
+    delete inlineBox;
+    run.setBox(nullptr);
+    // removeFromParent() unnecessarily dirties the ancestor subtree.
+    auto* ancestor = parent;
+    while (ancestor) {
+        ancestor-&gt;markDirty(false);
+        if (ancestor == &amp;rootLineBox)
+            break;
+        ancestor = ancestor-&gt;parent();
+    }
+}
+
</ins><span class="cx"> void RenderBlockFlow::computeBlockDirectionPositionsForLine(RootInlineBox* lineBox, BidiRun* firstRun, GlyphOverflowAndFallbackFontsMap&amp; textBoxDataMap,
</span><span class="cx">                                                         VerticalPositionCache&amp; verticalPositionCache)
</span><span class="cx"> {
</span><span class="cx">     setLogicalHeight(lineBox-&gt;alignBoxesInBlockDirection(logicalHeight(), textBoxDataMap, verticalPositionCache));
</span><span class="cx"> 
</span><span class="cx">     // Now make sure we place replaced render objects correctly.
</span><del>-    for (BidiRun* run = firstRun; run; run = run-&gt;next()) {
</del><ins>+    for (auto* run = firstRun; run; run = run-&gt;next()) {
</ins><span class="cx">         ASSERT(run-&gt;box());
</span><span class="cx">         if (!run-&gt;box())
</span><span class="cx">             continue; // Skip runs with no line boxes.
</span><span class="cx"> 
</span><del>-        InlineBox&amp; box = *run-&gt;box();
-
</del><span class="cx">         // Align positioned boxes with the top of the line box.  This is
</span><span class="cx">         // a reasonable approximation of an appropriate y position.
</span><del>-        if (run-&gt;renderer().isOutOfFlowPositioned())
-            box.setLogicalTop(logicalHeight());
</del><ins>+        auto&amp; renderer = run-&gt;renderer();
+        if (renderer.isOutOfFlowPositioned())
+            run-&gt;box()-&gt;setLogicalTop(logicalHeight());
</ins><span class="cx"> 
</span><span class="cx">         // Position is used to properly position both replaced elements and
</span><span class="cx">         // to update the static normal flow x/y of positioned elements.
</span><del>-        if (is&lt;RenderText&gt;(run-&gt;renderer()))
-            downcast&lt;RenderText&gt;(run-&gt;renderer()).positionLineBox(downcast&lt;InlineTextBox&gt;(box));
-        else if (is&lt;RenderBox&gt;(run-&gt;renderer()))
-            downcast&lt;RenderBox&gt;(run-&gt;renderer()).positionLineBox(downcast&lt;InlineElementBox&gt;(box));
-        else if (is&lt;RenderLineBreak&gt;(run-&gt;renderer()))
-            downcast&lt;RenderLineBreak&gt;(run-&gt;renderer()).replaceInlineBoxWrapper(downcast&lt;InlineElementBox&gt;(box));
</del><ins>+        bool inlineBoxIsRedundant = false;
+        if (is&lt;RenderText&gt;(renderer)) {
+            auto&amp; inlineTextBox = downcast&lt;InlineTextBox&gt;(*run-&gt;box());
+            downcast&lt;RenderText&gt;(renderer).positionLineBox(inlineTextBox);
+            inlineBoxIsRedundant = !inlineTextBox.len();
+        } else if (is&lt;RenderBox&gt;(renderer)) {
+            downcast&lt;RenderBox&gt;(renderer).positionLineBox(downcast&lt;InlineElementBox&gt;(*run-&gt;box()));
+            inlineBoxIsRedundant = renderer.isOutOfFlowPositioned();
+        } else if (is&lt;RenderLineBreak&gt;(renderer))
+            downcast&lt;RenderLineBreak&gt;(renderer).replaceInlineBoxWrapper(downcast&lt;InlineElementBox&gt;(*run-&gt;box()));
+        // Check if we need to keep this box on the line at all.
+        if (inlineBoxIsRedundant)
+            removeInlineBox(*run, *lineBox);
</ins><span class="cx">     }
</span><del>-    // Positioned objects and zero-length text nodes destroy their boxes in
-    // position(), which unnecessarily dirties the line.
-    lineBox-&gt;markDirty(false);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool isCollapsibleSpace(UChar character, const RenderText&amp; renderer)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -2152,10 +2152,6 @@
</span><span class="cx">             if (style().hasStaticBlockPosition(box.isHorizontal()))
</span><span class="cx">                 setChildNeedsLayout(MarkOnlyThis); // Just mark the positioned object as needing layout, so it will update its position properly.
</span><span class="cx">         }
</span><del>-
-        // Nuke the box.
-        box.removeFromParent();
-        delete &amp;box;
</del><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit212SourceWebCorerenderingRenderTextcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderText.cpp (200844 => 200845)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderText.cpp        2016-05-13 11:51:43 UTC (rev 200844)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderText.cpp        2016-05-13 12:14:22 UTC (rev 200845)
</span><span class="lines">@@ -1180,15 +1180,8 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderText::positionLineBox(InlineTextBox&amp; textBox)
</span><span class="cx"> {
</span><del>-    // FIXME: should not be needed!!!
-    if (!textBox.len()) {
-        // We want the box to be destroyed.
-        textBox.removeFromParent();
-        m_lineBoxes.remove(textBox);
-        delete &amp;textBox;
</del><ins>+    if (!textBox.len())
</ins><span class="cx">         return;
</span><del>-    }
-
</del><span class="cx">     m_containsReversedText |= !textBox.isLeftToRightDirection();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>