| Index: third_party/WebKit/Source/core/dom/Document.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
|
| index 7755997f837a5574ff44bf827390c9cfa208929d..478bc9cf9a9c21582f0ddfe4efa51ffef2351129 100644
|
| --- a/third_party/WebKit/Source/core/dom/Document.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp
|
| @@ -3458,7 +3458,7 @@ MouseEventWithHitTestResults Document::performMouseEventHitTest(
|
| layoutViewItem().hitTest(result);
|
|
|
| if (!request.readOnly())
|
| - updateHoverActiveState(request, result.innerElement());
|
| + updateHoverActiveState(request, result.innerElement(), result.scrollbar());
|
|
|
| if (isHTMLCanvasElement(result.innerNode())) {
|
| PlatformMouseEvent eventWithRegion = event;
|
| @@ -5975,22 +5975,23 @@ static LayoutObject* nearestCommonHoverAncestor(LayoutObject* obj1,
|
| }
|
|
|
| void Document::updateHoverActiveState(const HitTestRequest& request,
|
| - Element* innerElement) {
|
| + Element* innerElement,
|
| + bool hitScrollbar) {
|
| DCHECK(!request.readOnly());
|
|
|
| - if (request.active() && m_frame)
|
| + if (request.active() && m_frame && !hitScrollbar)
|
| m_frame->eventHandler().notifyElementActivated();
|
|
|
| - Element* innerElementInDocument = innerElement;
|
| + Element* innerElementInDocument = hitScrollbar ? nullptr : innerElement;
|
| while (innerElementInDocument && innerElementInDocument->document() != this) {
|
| innerElementInDocument->document().updateHoverActiveState(
|
| - request, innerElementInDocument);
|
| + request, innerElementInDocument, hitScrollbar);
|
| innerElementInDocument = innerElementInDocument->document().localOwner();
|
| }
|
|
|
| updateDistribution();
|
| Element* oldActiveElement = activeHoverElement();
|
| - if (oldActiveElement && !request.active()) {
|
| + if (oldActiveElement && (!request.active() || hitScrollbar)) {
|
| // The oldActiveElement layoutObject is null, dropped on :active by setting
|
| // display: none, for instance. We still need to clear the ActiveChain as
|
| // the mouse is released.
|
|
|