From 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Thu, 2 Jun 2011 12:07:03 +0100 Subject: Merge WebKit at r84325: Initial merge by git. Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b --- Source/WebCore/rendering/HitTestResult.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'Source/WebCore/rendering/HitTestResult.cpp') diff --git a/Source/WebCore/rendering/HitTestResult.cpp b/Source/WebCore/rendering/HitTestResult.cpp index e5638c9..77ccc4b 100644 --- a/Source/WebCore/rendering/HitTestResult.cpp +++ b/Source/WebCore/rendering/HitTestResult.cpp @@ -32,6 +32,7 @@ #include "HTMLNames.h" #include "HTMLParserIdioms.h" #include "RenderImage.h" +#include "RenderInline.h" #include "Scrollbar.h" #include "SelectionController.h" @@ -544,6 +545,20 @@ bool HitTestResult::addNodeToRectBasedTestResult(Node* node, int x, int y, const node = node->shadowAncestorNode(); mutableRectBasedTestResult().add(node); + if (node->renderer()->isInline()) { + for (RenderObject* curr = node->renderer()->parent(); curr; curr = curr->parent()) { + if (!curr->isRenderInline()) + break; + + // We need to make sure the nodes for culled inlines get included. + RenderInline* currInline = toRenderInline(curr); + if (currInline->alwaysCreateLineBoxes()) + break; + + if (currInline->visibleToHitTesting() && currInline->node()) + mutableRectBasedTestResult().add(currInline->node()->shadowAncestorNode()); + } + } return !rect.contains(rectForPoint(x, y)); } @@ -561,6 +576,20 @@ bool HitTestResult::addNodeToRectBasedTestResult(Node* node, int x, int y, const node = node->shadowAncestorNode(); mutableRectBasedTestResult().add(node); + if (node->renderer()->isInline()) { + for (RenderObject* curr = node->renderer()->parent(); curr; curr = curr->parent()) { + if (!curr->isRenderInline()) + break; + + // We need to make sure the nodes for culled inlines get included. + RenderInline* currInline = toRenderInline(curr); + if (currInline->alwaysCreateLineBoxes()) + break; + + if (currInline->visibleToHitTesting() && currInline->node()) + mutableRectBasedTestResult().add(currInline->node()->shadowAncestorNode()); + } + } return !rect.contains(rectForPoint(x, y)); } -- cgit v1.1