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