<!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>[165377] 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/165377">165377</a></dd>
<dt>Author</dt> <dd>stavila@adobe.com</dd>
<dt>Date</dt> <dd>2014-03-10 09:29:09 -0700 (Mon, 10 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding
https://bugs.webkit.org/show_bug.cgi?id=129485

Reviewed by Andrei Bucur.

Source/WebCore:

When searching for the region under the mouse pointer (to identify which region to scroll),
the localToAbsolute method must be called on the region container, not the region itself.
Also, when calling the offsetFromContainer method on a named flow fragment,
it must only take into consideration the border and padding of the fragment container,
not its scrolled offset.

Test: fast/regions/wheel-scrollable-single-region.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::scroll):
* rendering/RenderFlowThread.cpp:
* rendering/RenderFlowThread.h:
* rendering/RenderNamedFlowFragment.cpp:
(WebCore::RenderNamedFlowFragment::offsetFromContainer):
* rendering/RenderNamedFlowFragment.h:
* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::fragmentFromAbsolutePointAndBox):
* rendering/RenderNamedFlowThread.h:

LayoutTests:

Added layout tests for scrolling regions using the mouse wheel.

* fast/regions/wheel-scrollable-single-region-expected.html: Added.
* fast/regions/wheel-scrollable-single-region.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="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadcpp">trunk/Source/WebCore/rendering/RenderFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadh">trunk/Source/WebCore/rendering/RenderFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowFragmentcpp">trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowFragmenth">trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowThreadcpp">trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowThreadh">trunk/Source/WebCore/rendering/RenderNamedFlowThread.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionswheelscrollablesingleregionexpectedhtml">trunk/LayoutTests/fast/regions/wheel-scrollable-single-region-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastregionswheelscrollablesingleregionhtml">trunk/LayoutTests/fast/regions/wheel-scrollable-single-region.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/LayoutTests/ChangeLog        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-03-10  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding
+        https://bugs.webkit.org/show_bug.cgi?id=129485
+
+        Reviewed by Andrei Bucur.
+
+        Added layout tests for scrolling regions using the mouse wheel.
+
+        * fast/regions/wheel-scrollable-single-region-expected.html: Added.
+        * fast/regions/wheel-scrollable-single-region.html: Added.
+
</ins><span class="cx"> 2014-03-10  Michał Pakuła vel Rutka  &lt;m.pakula@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed EFL gardening
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionswheelscrollablesingleregionexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/wheel-scrollable-single-region-expected.html (0 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/wheel-scrollable-single-region-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/wheel-scrollable-single-region-expected.html        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font: 16px/1.25 monospace;&quot;&gt;
+    &lt;head&gt;
+        &lt;script&gt;
+            onload = function() {
+                if (window.eventSender) {
+                    eventSender.mouseMoveTo(250, 250);
+                    eventSender.continuousMouseScrollBy(0, -120);
+                    eventSender.mouseMoveTo(0, 0);
+                }
+            }
+        &lt;/script&gt;
+
+        &lt;style&gt;
+            #container {
+                border: 2px solid green;
+                height: 300px;
+                overflow: visible;
+            }
+
+            #region {
+                width: 600px;
+                height: 200px;
+                border: thick solid red;
+                padding: 50px;
+                overflow: scroll;
+            }
+
+            #innerDiv {
+                width: 300px;
+                height: 100px;
+                background-color: red;
+                margin-left: 30px;
+            }
+
+            #innerDiv:hover
+            {
+                background-color: green;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+
+    &lt;body onload=&quot;testScroll()&quot;&gt;
+        &lt;a style=&quot;font-size: 14px&quot; href=&quot;https://bugs.webkit.org/show_bug.cgi?id=129485&quot;&gt;[CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding&lt;/a&gt;
+        &lt;p&gt;This test passes if the &lt;span style=&quot;color:red&quot;&gt;region&lt;/span&gt; properly scrolls its content using the mouse wheel.&lt;/p&gt;
+
+        &lt;div id=&quot;region&quot;&gt;
+            &lt;div id=&quot;container&quot;&gt;
+                &lt;div&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem.&lt;/div&gt;
+                &lt;div id=&quot;innerDiv&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;color:red&quot;&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem. Nullam ullamcorper ornare porttitor. Morbi laoreet pellentesque diam, vitae hendrerit sem fringilla id. Maecenas rutrum lacinia lobortis. Praesent elit lectus, porttitor sed semper vel, fringilla id dolor. Sed lacus nisl, rutrum sit amet euismod a, vulputate quis elit. Fusce commodo dui quis lacus viverra vel egestas velit tempus. Donec ut sapien sit amet purus luctus fermentum. Donec eleifend pretium neque quis bibendum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam congue dapibus mi, id ultricies est sagittis et. Integer posuere, eros vitae laoreet congue, tortor purus euismod nibh, eu porta purus arcu id turpis. Donec vitae ultricies nibh. Nullam in urna dolor, at fringilla lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastregionswheelscrollablesingleregionhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/wheel-scrollable-single-region.html (0 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/wheel-scrollable-single-region.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/wheel-scrollable-single-region.html        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font: 16px/1.25 monospace;&quot;&gt;
+    &lt;head&gt;
+        &lt;script&gt;
+            onload = function() {
+                if (window.eventSender) {
+                    eventSender.mouseMoveTo(250, 250);
+                    eventSender.continuousMouseScrollBy(0, -120);
+                    eventSender.mouseMoveTo(0, 0);
+                }
+            }
+        &lt;/script&gt;
+
+        &lt;style&gt;
+            #container {
+                border: 2px solid green;
+                height: 300px;
+                overflow: visible;
+                -webkit-flow-into: flow;
+            }
+
+            #region {
+                width: 600px;
+                height: 200px;
+                -webkit-flow-from: flow;
+                border: thick solid red;
+                padding: 50px;
+                overflow: scroll;
+            }
+
+            #innerDiv {
+                width: 300px;
+                height: 100px;
+                background-color: red;
+                margin-left: 30px;
+            }
+
+            #innerDiv:hover
+            {
+                background-color: green;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+
+    &lt;body&gt;
+        &lt;a style=&quot;font-size: 14px&quot; href=&quot;https://bugs.webkit.org/show_bug.cgi?id=129485&quot;&gt;[CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding&lt;/a&gt;
+        &lt;p&gt;This test passes if the &lt;span style=&quot;color:red&quot;&gt;region&lt;/span&gt; properly scrolls its content using the mouse wheel.&lt;/p&gt;
+
+        &lt;div id=&quot;region&quot;&gt;&lt;/div&gt;
+
+        &lt;div id=&quot;container&quot;&gt;
+            &lt;div&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem.&lt;/div&gt;
+            &lt;div id=&quot;innerDiv&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;color:red&quot;&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem. Nullam ullamcorper ornare porttitor. Morbi laoreet pellentesque diam, vitae hendrerit sem fringilla id. Maecenas rutrum lacinia lobortis. Praesent elit lectus, porttitor sed semper vel, fringilla id dolor. Sed lacus nisl, rutrum sit amet euismod a, vulputate quis elit. Fusce commodo dui quis lacus viverra vel egestas velit tempus. Donec ut sapien sit amet purus luctus fermentum. Donec eleifend pretium neque quis bibendum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam congue dapibus mi, id ultricies est sagittis et. Integer posuere, eros vitae laoreet congue, tortor purus euismod nibh, eu porta purus arcu id turpis. Donec vitae ultricies nibh. Nullam in urna dolor, at fringilla lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/ChangeLog        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2014-03-10  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding
+        https://bugs.webkit.org/show_bug.cgi?id=129485
+
+        Reviewed by Andrei Bucur.
+
+        When searching for the region under the mouse pointer (to identify which region to scroll), 
+        the localToAbsolute method must be called on the region container, not the region itself.
+        Also, when calling the offsetFromContainer method on a named flow fragment,
+        it must only take into consideration the border and padding of the fragment container,
+        not its scrolled offset.
+
+        Test: fast/regions/wheel-scrollable-single-region.html
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::scroll):
+        * rendering/RenderFlowThread.cpp:
+        * rendering/RenderFlowThread.h:
+        * rendering/RenderNamedFlowFragment.cpp:
+        (WebCore::RenderNamedFlowFragment::offsetFromContainer):
+        * rendering/RenderNamedFlowFragment.h:
+        * rendering/RenderNamedFlowThread.cpp:
+        (WebCore::RenderNamedFlowThread::fragmentFromAbsolutePointAndBox):
+        * rendering/RenderNamedFlowThread.h:
+
</ins><span class="cx"> 2014-03-10  Jinwoo Song  &lt;jinwoo7.song@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove unused dispatchStorageEvent() from StorageAreaSync
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -45,13 +45,13 @@
</span><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><span class="cx"> #include &quot;RenderBoxRegionInfo.h&quot;
</span><span class="cx"> #include &quot;RenderFlexibleBox.h&quot;
</span><del>-#include &quot;RenderFlowThread.h&quot;
</del><span class="cx"> #include &quot;RenderGeometryMap.h&quot;
</span><span class="cx"> #include &quot;RenderInline.h&quot;
</span><span class="cx"> #include &quot;RenderIterator.h&quot;
</span><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &quot;RenderLayerCompositor.h&quot;
</span><span class="cx"> #include &quot;RenderNamedFlowFragment.h&quot;
</span><ins>+#include &quot;RenderNamedFlowThread.h&quot;
</ins><span class="cx"> #include &quot;RenderTableCell.h&quot;
</span><span class="cx"> #include &quot;RenderTheme.h&quot;
</span><span class="cx"> #include &quot;RenderView.h&quot;
</span><span class="lines">@@ -781,7 +781,7 @@
</span><span class="cx">     RenderBlock* nextScrollBlock = containingBlock();
</span><span class="cx">     if (nextScrollBlock &amp;&amp; nextScrollBlock-&gt;isRenderNamedFlowThread()) {
</span><span class="cx">         ASSERT(startBox);
</span><del>-        nextScrollBlock = toRenderFlowThread(nextScrollBlock)-&gt;regionFromAbsolutePointAndBox(wheelEventAbsolutePoint, *startBox);
</del><ins>+        nextScrollBlock = toRenderNamedFlowThread(nextScrollBlock)-&gt;fragmentFromAbsolutePointAndBox(wheelEventAbsolutePoint, *startBox);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (nextScrollBlock &amp;&amp; !nextScrollBlock-&gt;isRenderView())
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -436,28 +436,6 @@
</span><span class="cx">     return region ? clampBox-&gt;clampToStartAndEndRegions(region) : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderRegion* RenderFlowThread::regionFromAbsolutePointAndBox(const IntPoint&amp; absolutePoint, const RenderBox&amp; flowedBox)
-{
-    RenderRegion* startRegion = nullptr;
-    RenderRegion* endRegion = nullptr;
-    getRegionRangeForBox(&amp;flowedBox, startRegion, endRegion);
-
-    if (!startRegion)
-        return nullptr;
-
-    for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) {
-        RenderRegion* region = *iter;
-        IntRect regionAbsoluteRect(roundedIntPoint(region-&gt;localToAbsolute()), roundedIntSize(region-&gt;frameRect().size()));
-        if (regionAbsoluteRect.contains(absolutePoint))
-            return region;
-
-        if (region == endRegion)
-            break;
-    }
-
-    return nullptr;
-}
-
</del><span class="cx"> LayoutPoint RenderFlowThread::adjustedPositionRelativeToOffsetParent(const RenderBoxModelObject&amp; boxModelObject, const LayoutPoint&amp; startPoint)
</span><span class="cx"> {
</span><span class="cx">     LayoutPoint referencePoint = startPoint;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -104,8 +104,6 @@
</span><span class="cx"> 
</span><span class="cx">     RenderRegion* regionAtBlockOffset(const RenderBox*, LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration);
</span><span class="cx"> 
</span><del>-    RenderRegion* regionFromAbsolutePointAndBox(const IntPoint&amp;, const RenderBox&amp; flowedBox);
-
</del><span class="cx">     bool regionsHaveUniformLogicalWidth() const { return m_regionsHaveUniformLogicalWidth; }
</span><span class="cx">     bool regionsHaveUniformLogicalHeight() const { return m_regionsHaveUniformLogicalHeight; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowFragmentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -252,6 +252,14 @@
</span><span class="cx">     
</span><span class="cx">     return isLastRegion() &amp;&amp; (style().regionFragment() == BreakRegionFragment);
</span><span class="cx"> }
</span><ins>+    
+LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderObject* o, const LayoutPoint&amp;, bool*) const
+{
+    ASSERT(&amp;fragmentContainer() == o);
+    ASSERT(container() == o);
+    UNUSED_PARAM(o);
+    return topLeftLocationOffset();
+}
</ins><span class="cx"> 
</span><span class="cx"> void RenderNamedFlowFragment::layoutBlock(bool relayoutChildren, LayoutUnit)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowFragmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -68,6 +68,8 @@
</span><span class="cx">     RenderLayer&amp; fragmentContainerLayer() const;
</span><span class="cx">     
</span><span class="cx">     virtual bool shouldClipFlowThreadContent() const override;
</span><ins>+    
+    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</ins><span class="cx"> 
</span><span class="cx">     bool isPseudoElementRegion() const { return parent() &amp;&amp; parent()-&gt;isPseudoElement(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -366,6 +366,29 @@
</span><span class="cx">     return visualOverflowRect;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RenderNamedFlowFragment* RenderNamedFlowThread::fragmentFromAbsolutePointAndBox(const IntPoint&amp; absolutePoint, const RenderBox&amp; flowedBox)
+{
+    RenderRegion* startRegion = nullptr;
+    RenderRegion* endRegion = nullptr;
+    getRegionRangeForBox(&amp;flowedBox, startRegion, endRegion);
+    
+    if (!startRegion)
+        return nullptr;
+    
+    for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) {
+        RenderNamedFlowFragment* fragment = toRenderNamedFlowFragment(*iter);
+        RenderBlockFlow&amp; fragmentContainer = fragment-&gt;fragmentContainer();
+        IntRect fragmentAbsoluteRect(roundedIntPoint(fragmentContainer.localToAbsolute()), roundedIntSize(fragmentContainer.paddingBoxRect().size()));
+        if (fragmentAbsoluteRect.contains(absolutePoint))
+            return fragment;
+        
+        if (fragment == endRegion)
+            break;
+    }
+    
+    return nullptr;
+}
+
</ins><span class="cx"> void RenderNamedFlowThread::computeOverflow(LayoutUnit oldClientAfterEdge, bool recomputeFloats)
</span><span class="cx"> {
</span><span class="cx">     RenderFlowThread::computeOverflow(oldClientAfterEdge, recomputeFloats);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.h (165376 => 165377)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.h        2014-03-10 16:28:13 UTC (rev 165376)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.h        2014-03-10 16:29:09 UTC (rev 165377)
</span><span class="lines">@@ -70,6 +70,8 @@
</span><span class="cx"> 
</span><span class="cx">     LayoutRect decorationsClipRectForBoxInNamedFlowFragment(const RenderBox&amp;, RenderNamedFlowFragment&amp;) const;
</span><span class="cx"> 
</span><ins>+    RenderNamedFlowFragment* fragmentFromAbsolutePointAndBox(const IntPoint&amp;, const RenderBox&amp; flowedBox);
+
</ins><span class="cx">     void registerNamedFlowContentElement(Element&amp;);
</span><span class="cx">     void unregisterNamedFlowContentElement(Element&amp;);
</span><span class="cx">     const NamedFlowContentElements&amp; contentElements() const { return m_contentElements; }
</span></span></pre>
</div>
</div>

</body>
</html>