| Index: Source/core/dom/TreeScope.cpp
|
| diff --git a/Source/core/dom/TreeScope.cpp b/Source/core/dom/TreeScope.cpp
|
| index 086ecf77cec14dbc43c037c71a1ae1211205d7e6..1d6ac1ddb958b1cf41ace169051a10b1dff6569d 100644
|
| --- a/Source/core/dom/TreeScope.cpp
|
| +++ b/Source/core/dom/TreeScope.cpp
|
| @@ -214,7 +214,7 @@ HTMLMapElement* TreeScope::getImageMap(const String& url) const
|
| return toHTMLMapElement(m_imageMapsByName->getElementByMapName(AtomicString(name).impl(), this));
|
| }
|
|
|
| -Node* nodeFromPoint(Document* document, int x, int y, LayoutPoint* localPoint)
|
| +RenderObject* rendererFromPoint(Document* document, int x, int y, LayoutPoint* localPoint)
|
| {
|
| Frame* frame = document->frame();
|
|
|
| @@ -237,14 +237,19 @@ Node* nodeFromPoint(Document* document, int x, int y, LayoutPoint* localPoint)
|
| if (localPoint)
|
| *localPoint = result.localPoint();
|
|
|
| - return result.innerNode();
|
| + return result.renderer();
|
| }
|
|
|
| Element* TreeScope::elementFromPoint(int x, int y) const
|
| {
|
| - Node* node = nodeFromPoint(&rootNode()->document(), x, y);
|
| - if (node && node->isTextNode())
|
| - node = node->parentNode();
|
| + RenderObject* renderer = rendererFromPoint(&rootNode()->document(), x, y);
|
| + if (!renderer)
|
| + return 0;
|
| + Node* node = renderer->node();
|
| + if (!node)
|
| + return 0;
|
| + if (node->isPseudoElement() || node->isTextNode())
|
| + node = node->parentOrShadowHostNode();
|
| ASSERT(!node || node->isElementNode() || node->isShadowRoot());
|
| node = ancestorInThisScope(node);
|
| if (!node || !node->isElementNode())
|
|
|