Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index aa963040e045666856a984ffbd983b151c2749d9..cfe2c0e8690ddca91fd8a623338707eb25a5fefd 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -89,6 +89,7 @@ |
#include "core/dom/NodeFilter.h" |
#include "core/dom/NodeIterator.h" |
#include "core/dom/NodeRareData.h" |
+#include "core/dom/NodeRenderingTraversal.h" |
#include "core/dom/NodeTraversal.h" |
#include "core/dom/NodeWithIndex.h" |
#include "core/dom/PageTransitionEvent.h" |
@@ -3121,24 +3122,33 @@ void Document::removeFocusedNodeOfSubtree(Node* node, bool amongChildrenOnly) |
void Document::hoveredNodeDetached(Node* node) |
{ |
- if (!m_hoverNode || (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != m_hoverNode->parentNode()))) |
+ if (!m_hoverNode) |
return; |
- m_hoverNode = node->parentNode(); |
+ NodeRenderingTraversal::ParentDetails details; |
+ if (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != NodeRenderingTraversal::parent(m_hoverNode.get(), &details))) |
+ return; |
+ |
+ m_hoverNode = NodeRenderingTraversal::parent(node, &details); |
while (m_hoverNode && !m_hoverNode->renderer()) |
- m_hoverNode = m_hoverNode->parentNode(); |
+ m_hoverNode = m_hoverNode->parentOrShadowHostNode(); |
hayato
2013/06/03 09:03:47
Shouldn't we use NodeRenderingTraversal::parent()
tasak
2013/06/03 11:18:25
Done.
|
if (frame()) |
frame()->eventHandler()->scheduleHoverStateUpdate(); |
} |
void Document::activeChainNodeDetached(Node* node) |
{ |
- if (!m_activeElement || (node != m_activeElement && (!m_activeElement->isTextNode() || node != m_activeElement->parentNode()))) |
+ if (!m_activeElement) |
+ return; |
+ |
+ NodeRenderingTraversal::ParentDetails details; |
+ if (node != m_activeElement && (!m_activeElement->isTextNode() || node != NodeRenderingTraversal::parent(m_activeElement.get(), &details))) |
return; |
- m_activeElement = node->parentElement(); |
+ Node* parent = NodeRenderingTraversal::parent(node, &details); |
+ m_activeElement = parent && parent->isElementNode() ? toElement(parent) : 0; |
while (m_activeElement && !m_activeElement->renderer()) |
- m_activeElement = m_activeElement->parentElement(); |
+ m_activeElement = m_activeElement->parentOrShadowHostElement(); |
hayato
2013/06/03 09:03:47
Ditto.
Also looks like NodeRenderingTraversal sho
tasak
2013/06/03 11:18:25
Done.
|
} |
const Vector<AnnotatedRegionValue>& Document::annotatedRegions() const |