| Index: Source/core/dom/Document.cpp
|
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
|
| index 22c3ffb5c9ebb5af0b4a6986b81d6b3ef0dbcc82..30687207b4c4beb57bae8b01403e1cd1678204e4 100644
|
| --- a/Source/core/dom/Document.cpp
|
| +++ b/Source/core/dom/Document.cpp
|
| @@ -5088,11 +5088,16 @@ void Document::updateHoverActiveState(const HitTestRequest& request, Element* in
|
| for (size_t i = 0; i < removeCount; ++i)
|
| nodesToRemoveFromChain[i]->setHovered(false);
|
|
|
| + bool sawCommonAncestor = false;
|
| size_t addCount = nodesToAddToChain.size();
|
| for (size_t i = 0; i < addCount; ++i) {
|
| + // Elements past the common ancestor do not change hover state, but might change active state.
|
| + if (ancestor && nodesToAddToChain[i] == ancestor->node())
|
| + sawCommonAncestor = true;
|
| if (allowActiveChanges)
|
| nodesToAddToChain[i]->setActive(true);
|
| - nodesToAddToChain[i]->setHovered(true);
|
| + if (!sawCommonAncestor)
|
| + nodesToAddToChain[i]->setHovered(true);
|
| }
|
|
|
| updateStyleIfNeeded();
|
|
|