summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/rendering/HitTestResult.cpp
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-06-02 12:07:03 +0100
committerBen Murdoch <benm@google.com>2011-06-10 10:47:21 +0100
commit2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch)
treee4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/WebCore/rendering/HitTestResult.cpp
parent87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff)
downloadexternal_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.cpp29
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));
}