diff options
author | Ben Murdoch <benm@google.com> | 2011-06-02 12:07:03 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-10 10:47:21 +0100 |
commit | 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch) | |
tree | e4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/WebCore/rendering/HitTestResult.cpp | |
parent | 87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff) | |
download | external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2 |
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Source/WebCore/rendering/HitTestResult.cpp')
-rw-r--r-- | Source/WebCore/rendering/HitTestResult.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
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)); } |