Title: [107605] trunk
Revision
107605
Author
[email protected]
Date
2012-02-13 14:02:26 -0800 (Mon, 13 Feb 2012)

Log Message

[CSS Regions] Inconsistent text selection behavior in regions
https://bugs.webkit.org/show_bug.cgi?id=76456

Patch by Raul Hudea <[email protected]> on 2012-02-13
Reviewed by David Hyatt.

Source/WebCore:

Use the proper bounding rect when doing hit testing on flow threads.
Based on initial patch by Alexandru Chiculita.

Test: fast/regions/hit-test-region.html

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::hitTestRegion):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::hitTest):
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::nodeAtPoint):

LayoutTests:

* fast/regions/hit-test-region-expected.txt: Added.
* fast/regions/hit-test-region.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (107604 => 107605)


--- trunk/LayoutTests/ChangeLog	2012-02-13 22:01:29 UTC (rev 107604)
+++ trunk/LayoutTests/ChangeLog	2012-02-13 22:02:26 UTC (rev 107605)
@@ -1,3 +1,13 @@
+2012-02-13  Raul Hudea  <[email protected]>
+
+        [CSS Regions] Inconsistent text selection behavior in regions
+        https://bugs.webkit.org/show_bug.cgi?id=76456
+
+        Reviewed by David Hyatt.
+
+        * fast/regions/hit-test-region-expected.txt: Added.
+        * fast/regions/hit-test-region.html: Added.
+
 2012-02-12  Andy Estes  <[email protected]>
 
         [Windows] Add API to enable inverted color drawing on a WebView

Added: trunk/LayoutTests/fast/regions/hit-test-region-expected.txt (0 => 107605)


--- trunk/LayoutTests/fast/regions/hit-test-region-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/regions/hit-test-region-expected.txt	2012-02-13 22:02:26 UTC (rev 107605)
@@ -0,0 +1,5 @@
+Test for https://bugs.webkit.org/show_bug.cgi?id=76456 Inconsistent text selection behavior in regions.
+
+The red square should turn green when hovered.
+
+PASS

Added: trunk/LayoutTests/fast/regions/hit-test-region.html (0 => 107605)


--- trunk/LayoutTests/fast/regions/hit-test-region.html	                        (rev 0)
+++ trunk/LayoutTests/fast/regions/hit-test-region.html	2012-02-13 22:02:26 UTC (rev 107605)
@@ -0,0 +1,42 @@
+<style type="text/css">
+#content { -webkit-flow-into: article; }
+.region{
+    -webkit-flow-from: article;
+    width:200px;
+    height:500px;
+    float:left;
+    margin: 50px;
+}
+#target { width: 50px; height: 50px; background-color: red; margin: 10px; }
+#target:hover { background-color: green; }
+</style>
+<p>
+    Test for <i><a href=""
+    Inconsistent text selection behavior in regions</i>.
+</p>
+<p>
+    The red square should turn green when hovered.
+</p>
+<div id="region1" class="region"></div>
+<div id="region2" class="region"></div>
+
+<div id="content" style="outline: solid black">
+    <div>
+        <div style="height: 800px; background-color: purple;"></div>
+        <div style="float: right; background-color: lightyellow; margin: 5px;">
+            <div id="target"></div>
+        </div>
+    </div>
+</div>
+<div id="result" style="clear:both">FAIL: Test did not run.</div>
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+
+    var result = document.getElementById("result");
+    var hitElement = document.elementFromPoint(520, 465);
+    if (hitElement === document.getElementById("target"))
+        result.innerText = "PASS";
+    else
+        result.innerText = "FAIL: Hit " + hitElement;
+</script>

Modified: trunk/Source/WebCore/ChangeLog (107604 => 107605)


--- trunk/Source/WebCore/ChangeLog	2012-02-13 22:01:29 UTC (rev 107604)
+++ trunk/Source/WebCore/ChangeLog	2012-02-13 22:02:26 UTC (rev 107605)
@@ -1,3 +1,22 @@
+2012-02-13  Raul Hudea  <[email protected]>
+
+        [CSS Regions] Inconsistent text selection behavior in regions
+        https://bugs.webkit.org/show_bug.cgi?id=76456
+
+        Reviewed by David Hyatt.
+
+        Use the proper bounding rect when doing hit testing on flow threads.
+        Based on initial patch by Alexandru Chiculita.
+
+        Test: fast/regions/hit-test-region.html
+
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::RenderFlowThread::hitTestRegion):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::hitTest):
+        * rendering/RenderRegion.cpp:
+        (WebCore::RenderRegion::nodeAtPoint):
+
 2012-02-12  Andy Estes  <[email protected]>
 
         [Windows] Add API to enable inverted color drawing on a WebView

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (107604 => 107605)


--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2012-02-13 22:01:29 UTC (rev 107604)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2012-02-13 22:02:26 UTC (rev 107605)
@@ -491,7 +491,7 @@
     LayoutPoint transformedPoint(pointInContainer.x() - renderFlowThreadOffset.x(), pointInContainer.y() - renderFlowThreadOffset.y());
     
     // Always ignore clipping, since the RenderFlowThread has nothing to do with the bounds of the FrameView.
-    HitTestRequest newRequest(request.type() & HitTestRequest::IgnoreClipping);
+    HitTestRequest newRequest(request.type() | HitTestRequest::IgnoreClipping);
 
     RenderRegion* oldRegion = result.region();
     result.setRegion(region);

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (107604 => 107605)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-02-13 22:01:29 UTC (rev 107604)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-02-13 22:02:26 UTC (rev 107605)
@@ -77,6 +77,7 @@
 #include "Page.h"
 #include "PlatformMouseEvent.h"
 #include "RenderArena.h"
+#include "RenderFlowThread.h"
 #include "RenderInline.h"
 #include "RenderMarquee.h"
 #include "RenderReplica.h"
@@ -3110,7 +3111,7 @@
 {
     renderer()->document()->updateLayout();
     
-    LayoutRect hitTestArea = renderer()->view()->documentRect();
+    LayoutRect hitTestArea = renderer()->isRenderFlowThread() ? toRenderFlowThread(renderer())->borderBoxRect() : renderer()->view()->documentRect();
     if (!request.ignoreClipping())
         hitTestArea.intersect(frameVisibleRect(renderer()));
 

Modified: trunk/Source/WebCore/rendering/RenderRegion.cpp (107604 => 107605)


--- trunk/Source/WebCore/rendering/RenderRegion.cpp	2012-02-13 22:01:29 UTC (rev 107604)
+++ trunk/Source/WebCore/rendering/RenderRegion.cpp	2012-02-13 22:02:26 UTC (rev 107605)
@@ -157,7 +157,8 @@
 
     // Check our bounds next. For this purpose always assume that we can only be hit in the
     // foreground phase (which is true for replaced elements like images).
-    LayoutRect boundsRect(adjustedLocation, size());
+    LayoutRect boundsRect = borderBoxRectInRegion(result.region());
+    boundsRect.moveBy(adjustedLocation);
     if (visibleToHitTesting() && action == HitTestForeground && boundsRect.intersects(result.rectForPoint(pointInContainer))) {
         // Check the contents of the RenderFlowThread.
         if (m_flowThread && m_flowThread->hitTestRegion(this, request, result, pointInContainer, LayoutPoint(adjustedLocation.x() + borderLeft() + paddingLeft(), adjustedLocation.y() + borderTop() + paddingTop())))
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to