<!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>[165537] trunk/Source/WebCore</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/165537">165537</a></dd>
<dt>Author</dt> <dd>ossy@webkit.org</dd>
<dt>Date</dt> <dd>2014-03-13 09:32:52 -0700 (Thu, 13 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>The scrolledContentOffset method should handle the hasOverflowClip check
https://bugs.webkit.org/show_bug.cgi?id=130028

Patch by Radu Stavila &lt;stavila@adobe.com&gt; on 2014-03-13
Reviewed by Antti Koivisto.

Before this patch, every call to RenderBox::scrolledContentOffset was guarded by the
hasOverflowClip check, because the scrolledContentOffset method would ASSERT(hasOverflowClip()).
This was simplified by moving the hasOverflowClip check inside the scrolledContentOffset method
and returning (0, 0) for elements that do not clip the overflow.

No new tests needed, just a refactor.

* editing/VisibleUnits.cpp:
(WebCore::absoluteLineDirectionPointToLocalPointInBlock):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
(WebCore::RenderBlock::selectionGapRectsForRepaint):
(WebCore::RenderBlock::paintSelection):
(WebCore::RenderBlock::nodeAtPoint):
(WebCore::RenderBlock::offsetForContents):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::scrolledContentOffset):
(WebCore::RenderBox::offsetFromContainer):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::offsetFromContainer):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::mapLayerClipRectsToFragmentationLayer):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::decorationsClipRectForBoxInNamedFlowFragment):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::mapLocalToContainer):
(WebCore::RenderObject::pushMappingToContainer):
(WebCore::RenderObject::mapAbsoluteToLocalPoint):
(WebCore::RenderObject::offsetFromContainer):
* rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::hitInnerTextElement):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreeditingVisibleUnitscpp">trunk/Source/WebCore/editing/VisibleUnits.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlinecpp">trunk/Source/WebCore/rendering/RenderInline.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowThreadcpp">trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlcpp">trunk/Source/WebCore/rendering/RenderTextControl.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/ChangeLog        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2014-03-13  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        The scrolledContentOffset method should handle the hasOverflowClip check
+        https://bugs.webkit.org/show_bug.cgi?id=130028
+
+        Reviewed by Antti Koivisto.
+
+        Before this patch, every call to RenderBox::scrolledContentOffset was guarded by the
+        hasOverflowClip check, because the scrolledContentOffset method would ASSERT(hasOverflowClip()).
+        This was simplified by moving the hasOverflowClip check inside the scrolledContentOffset method
+        and returning (0, 0) for elements that do not clip the overflow.
+
+        No new tests needed, just a refactor.
+
+        * editing/VisibleUnits.cpp:
+        (WebCore::absoluteLineDirectionPointToLocalPointInBlock):
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::paintObject):
+        (WebCore::RenderBlock::selectionGapRectsForRepaint):
+        (WebCore::RenderBlock::paintSelection):
+        (WebCore::RenderBlock::nodeAtPoint):
+        (WebCore::RenderBlock::offsetForContents):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::scrolledContentOffset):
+        (WebCore::RenderBox::offsetFromContainer):
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::offsetFromContainer):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::mapLayerClipRectsToFragmentationLayer):
+        (WebCore::RenderLayer::calculateClipRects):
+        * rendering/RenderNamedFlowThread.cpp:
+        (WebCore::RenderNamedFlowThread::decorationsClipRectForBoxInNamedFlowFragment):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::mapLocalToContainer):
+        (WebCore::RenderObject::pushMappingToContainer):
+        (WebCore::RenderObject::mapAbsoluteToLocalPoint):
+        (WebCore::RenderObject::offsetFromContainer):
+        * rendering/RenderTextControl.cpp:
+        (WebCore::RenderTextControl::hitInnerTextElement):
+
</ins><span class="cx"> 2014-03-13  Chris Fleizach  &lt;cfleizach@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: accessibility data table heuristics fail on this jQuery table
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -936,9 +936,7 @@
</span><span class="cx"> static inline IntPoint absoluteLineDirectionPointToLocalPointInBlock(RootInlineBox&amp; root, int lineDirectionPoint)
</span><span class="cx"> {
</span><span class="cx">     RenderBlockFlow&amp; containingBlock = root.blockFlow();
</span><del>-    FloatPoint absoluteBlockPoint = containingBlock.localToAbsolute(FloatPoint());
-    if (containingBlock.hasOverflowClip())
-        absoluteBlockPoint -= containingBlock.scrolledContentOffset();
</del><ins>+    FloatPoint absoluteBlockPoint = containingBlock.localToAbsolute(FloatPoint()) - containingBlock.scrolledContentOffset();
</ins><span class="cx"> 
</span><span class="cx">     if (containingBlock.isHorizontalWritingMode())
</span><span class="cx">         return IntPoint(lineDirectionPoint - absoluteBlockPoint.x(), root.blockDirectionPointInLine());
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -2330,8 +2330,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Adjust our painting position if we're inside a scrolled layer (e.g., an overflow:auto div).
</span><span class="cx">     LayoutPoint scrolledOffset = paintOffset;
</span><del>-    if (hasOverflowClip())
-        scrolledOffset.move(-scrolledContentOffset());
</del><ins>+    scrolledOffset.move(-scrolledContentOffset());
</ins><span class="cx"> 
</span><span class="cx">     // 2. paint contents
</span><span class="cx">     if (paintPhase != PaintPhaseSelfOutline) {
</span><span class="lines">@@ -2510,11 +2509,8 @@
</span><span class="cx"> 
</span><span class="cx">     TransformState transformState(TransformState::ApplyTransformDirection, FloatPoint());
</span><span class="cx">     mapLocalToContainer(repaintContainer, transformState, ApplyContainerFlip | UseTransforms);
</span><del>-    LayoutPoint offsetFromRepaintContainer = roundedLayoutPoint(transformState.mappedPoint());
</del><ins>+    LayoutPoint offsetFromRepaintContainer = roundedLayoutPoint(transformState.mappedPoint()) - scrolledContentOffset();
</ins><span class="cx"> 
</span><del>-    if (hasOverflowClip())
-        offsetFromRepaintContainer -= scrolledContentOffset();
-
</del><span class="cx">     LogicalSelectionOffsetCaches cache(*this);
</span><span class="cx">     LayoutUnit lastTop = 0;
</span><span class="cx">     LayoutUnit lastLeft = logicalLeftSelectionOffset(*this, lastTop, cache);
</span><span class="lines">@@ -2541,7 +2537,7 @@
</span><span class="cx">                     LayoutRect localBounds(gapRectsBounds);
</span><span class="cx">                     flipForWritingMode(localBounds);
</span><span class="cx">                     gapRectsBounds = localToContainerQuad(FloatRect(localBounds), &amp;layer-&gt;renderer()).enclosingBoundingBox();
</span><del>-                    if (layer-&gt;renderer().hasOverflowClip())
</del><ins>+                    if (layer-&gt;renderer().isBox())
</ins><span class="cx">                         gapRectsBounds.move(layer-&gt;renderBox()-&gt;scrolledContentOffset());
</span><span class="cx">                 }
</span><span class="cx">                 layer-&gt;addBlockSelectionGapsBounds(gapRectsBounds);
</span><span class="lines">@@ -3175,9 +3171,7 @@
</span><span class="cx">     bool checkChildren = !useClip || (hasControlClip() ? locationInContainer.intersects(controlClipRect(adjustedLocation)) : locationInContainer.intersects(overflowClipRect(adjustedLocation, locationInContainer.region(), IncludeOverlayScrollbarSize)));
</span><span class="cx">     if (checkChildren) {
</span><span class="cx">         // Hit test descendants first.
</span><del>-        LayoutSize scrolledOffset(localOffset);
-        if (hasOverflowClip())
-            scrolledOffset -= scrolledContentOffset();
</del><ins>+        LayoutSize scrolledOffset(localOffset - scrolledContentOffset());
</ins><span class="cx"> 
</span><span class="cx">         // Hit test contents if we don't have columns.
</span><span class="cx">         if (!hasColumns()) {
</span><span class="lines">@@ -3453,10 +3447,8 @@
</span><span class="cx"> void RenderBlock::offsetForContents(LayoutPoint&amp; offset) const
</span><span class="cx"> {
</span><span class="cx">     offset = flipForWritingMode(offset);
</span><ins>+    offset += scrolledContentOffset();
</ins><span class="cx"> 
</span><del>-    if (hasOverflowClip())
-        offset += scrolledContentOffset();
-
</del><span class="cx">     if (hasColumns())
</span><span class="cx">         adjustPointToColumnContents(offset);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -912,7 +912,9 @@
</span><span class="cx"> 
</span><span class="cx"> IntSize RenderBox::scrolledContentOffset() const
</span><span class="cx"> {
</span><del>-    ASSERT(hasOverflowClip());
</del><ins>+    if (!hasOverflowClip())
+        return IntSize();
+
</ins><span class="cx">     ASSERT(hasLayer());
</span><span class="cx">     return layer()-&gt;scrolledContentOffset();
</span><span class="cx"> }
</span><span class="lines">@@ -1960,7 +1962,7 @@
</span><span class="cx">             offset += topLeftLocationOffset();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (o-&gt;hasOverflowClip())
</del><ins>+    if (o-&gt;isBox())
</ins><span class="cx">         offset -= toRenderBox(o)-&gt;scrolledContentOffset();
</span><span class="cx"> 
</span><span class="cx">     if (style().position() == AbsolutePosition &amp;&amp; o-&gt;isInFlowPositioned() &amp;&amp; o-&gt;isRenderInline())
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -1210,7 +1210,7 @@
</span><span class="cx"> 
</span><span class="cx">     container-&gt;adjustForColumns(offset, point);
</span><span class="cx"> 
</span><del>-    if (container-&gt;hasOverflowClip())
</del><ins>+    if (container-&gt;isBox())
</ins><span class="cx">         offset -= toRenderBox(container)-&gt;scrolledContentOffset();
</span><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -5289,8 +5289,7 @@
</span><span class="cx"> 
</span><span class="cx">     LayoutPoint portionLocation = flowThreadPortionRect.location();
</span><span class="cx">     LayoutRect regionContentBox = namedFlowFragment-&gt;fragmentContainer().contentBoxRect();
</span><del>-    IntSize scrolledContentOffset = namedFlowFragment-&gt;fragmentContainer().hasOverflowClip() ? namedFlowFragment-&gt;fragmentContainer().scrolledContentOffset() : IntSize();
-    LayoutSize moveOffset = portionLocation - regionContentBox.location() + scrolledContentOffset;
</del><ins>+    LayoutSize moveOffset = portionLocation - regionContentBox.location() + namedFlowFragment-&gt;fragmentContainer().scrolledContentOffset();
</ins><span class="cx"> 
</span><span class="cx">     ClipRect newOverflowClipRect = clipRects.overflowClipRect();
</span><span class="cx">     newOverflowClipRect.move(moveOffset);
</span><span class="lines">@@ -6785,10 +6784,8 @@
</span><span class="cx"> void RenderLayer::paintNamedFlowThreadInsideRegion(GraphicsContext* context, RenderNamedFlowFragment* region, LayoutRect paintDirtyRect, LayoutPoint paintOffset, PaintBehavior paintBehavior, PaintLayerFlags paintFlags)
</span><span class="cx"> {
</span><span class="cx">     LayoutRect regionContentBox = toRenderBox(region-&gt;layerOwner()).contentBoxRect();
</span><del>-    LayoutSize moveOffset = region-&gt;flowThreadPortionLocation() - (paintOffset + regionContentBox.location());
-    if (region-&gt;fragmentContainer().hasOverflowClip())
-        moveOffset += region-&gt;fragmentContainer().scrolledContentOffset();
-    
</del><ins>+    LayoutSize moveOffset = region-&gt;flowThreadPortionLocation() - (paintOffset + regionContentBox.location()) + region-&gt;fragmentContainer().scrolledContentOffset();
+
</ins><span class="cx">     IntPoint adjustedPaintOffset = roundedIntPoint(-moveOffset);
</span><span class="cx">     paintDirtyRect.move(moveOffset);
</span><span class="cx"> 
</span><span class="lines">@@ -6876,7 +6873,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LayoutRect regionContentBox = toRenderBlockFlow(&amp;renderer())-&gt;contentBoxRect();
</span><del>-    IntSize scrolledContentOffset = region-&gt;fragmentContainer().hasOverflowClip() ? region-&gt;fragmentContainer().scrolledContentOffset() : IntSize();
</del><span class="cx"> 
</span><span class="cx">     RenderLayer* resultLayer = 0;
</span><span class="cx">     for (int i = fragments.size() - 1; i &gt;= 0; --i) {
</span><span class="lines">@@ -6885,7 +6881,7 @@
</span><span class="cx">         if (!fragment.backgroundRect.intersects(hitTestLocation))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        LayoutSize hitTestOffset = portionLocation - (fragment.layerBounds.location() + regionContentBox.location()) + scrolledContentOffset;
</del><ins>+        LayoutSize hitTestOffset = portionLocation - (fragment.layerBounds.location() + regionContentBox.location()) + region-&gt;fragmentContainer().scrolledContentOffset();
</ins><span class="cx"> 
</span><span class="cx">         // Always ignore clipping, since the RenderFlowThread has nothing to do with the bounds of the FrameView.
</span><span class="cx">         HitTestRequest newRequest(request.type() | HitTestRequest::IgnoreClipping | HitTestRequest::DisallowShadowContent);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -299,9 +299,8 @@
</span><span class="cx">     flipForWritingModeLocalCoordinates(visualOverflowRect);
</span><span class="cx">     
</span><span class="cx">     // Take the scrolled offset of the region into consideration.
</span><del>-    RenderBlockFlow&amp; fragmentContainer = fragment.fragmentContainer();
-    if (fragmentContainer.hasOverflowClip()) {
-        IntSize scrolledContentOffset = fragmentContainer.scrolledContentOffset();
</del><ins>+    IntSize scrolledContentOffset = fragment.fragmentContainer().scrolledContentOffset();
+    if (!scrolledContentOffset.isZero()) {
</ins><span class="cx">         if (style().isFlippedBlocksWritingMode())
</span><span class="cx">             scrolledContentOffset = -scrolledContentOffset;
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -1618,7 +1618,7 @@
</span><span class="cx">     if (!columnOffset.isZero())
</span><span class="cx">         transformState.move(columnOffset);
</span><span class="cx"> 
</span><del>-    if (o-&gt;hasOverflowClip())
</del><ins>+    if (o-&gt;isBox())
</ins><span class="cx">         transformState.move(-toRenderBox(o)-&gt;scrolledContentOffset());
</span><span class="cx"> 
</span><span class="cx">     o-&gt;mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
</span><span class="lines">@@ -1634,7 +1634,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: this should call offsetFromContainer to share code, but I'm not sure it's ever called.
</span><span class="cx">     LayoutSize offset;
</span><del>-    if (container-&gt;hasOverflowClip())
</del><ins>+    if (container-&gt;isBox())
</ins><span class="cx">         offset = -toRenderBox(container)-&gt;scrolledContentOffset();
</span><span class="cx"> 
</span><span class="cx">     geometryMap.push(this, offset, hasColumns());
</span><span class="lines">@@ -1647,7 +1647,7 @@
</span><span class="cx">     auto o = parent();
</span><span class="cx">     if (o) {
</span><span class="cx">         o-&gt;mapAbsoluteToLocalPoint(mode, transformState);
</span><del>-        if (o-&gt;hasOverflowClip())
</del><ins>+        if (o-&gt;isBox())
</ins><span class="cx">             transformState.move(toRenderBox(o)-&gt;scrolledContentOffset());
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1718,7 +1718,7 @@
</span><span class="cx"> 
</span><span class="cx">     o-&gt;adjustForColumns(offset, point);
</span><span class="cx"> 
</span><del>-    if (o-&gt;hasOverflowClip())
</del><ins>+    if (o-&gt;isBox())
</ins><span class="cx">         offset -= toRenderBox(o)-&gt;scrolledContentOffset();
</span><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControl.cpp (165536 => 165537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControl.cpp        2014-03-13 16:30:06 UTC (rev 165536)
+++ trunk/Source/WebCore/rendering/RenderTextControl.cpp        2014-03-13 16:32:52 UTC (rev 165537)
</span><span class="lines">@@ -166,9 +166,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     LayoutPoint adjustedLocation = accumulatedOffset + location();
</span><del>-    LayoutPoint localPoint = pointInContainer - toLayoutSize(adjustedLocation + innerText-&gt;renderBox()-&gt;location());
-    if (hasOverflowClip())
-        localPoint += scrolledContentOffset();
</del><ins>+    LayoutPoint localPoint = pointInContainer - toLayoutSize(adjustedLocation + innerText-&gt;renderBox()-&gt;location()) + scrolledContentOffset();
</ins><span class="cx">     result.setInnerNode(innerText);
</span><span class="cx">     result.setInnerNonSharedNode(innerText);
</span><span class="cx">     result.setLocalPoint(localPoint);
</span></span></pre>
</div>
</div>

</body>
</html>