Chromium Code Reviews| 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 c44b227186644837c5a4a628e8e496940d1075d4..4943bf2377ca29ec65a66e63b4ff88f66c54d711 100644 |
| --- a/third_party/WebKit/Source/core/dom/Document.cpp |
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp |
| @@ -234,6 +234,7 @@ |
| #include "platform/ScriptForbiddenScope.h" |
| #include "platform/network/ContentSecurityPolicyParsers.h" |
| #include "platform/network/HTTPParsers.h" |
| +#include "platform/scroll/Scrollbar.h" |
| #include "platform/scroll/ScrollbarTheme.h" |
| #include "platform/text/PlatformLocale.h" |
| #include "platform/text/SegmentedString.h" |
| @@ -6019,13 +6020,17 @@ static LayoutObject* nearestCommonHoverAncestor(LayoutObject* obj1, |
| void Document::updateHoverActiveState(const HitTestRequest& request, |
| Element* innerElement, |
| - bool hitScrollbar) { |
| + Scrollbar* hitScrollbar) { |
| DCHECK(!request.readOnly()); |
| - if (request.active() && m_frame && !hitScrollbar) |
| + // Only cancel hover state when hitting native scrollbar cause custom |
|
bokan
2016/11/23 21:05:19
nit: cause -> because
|
| + // scrollbar can be changed style by the ancestor element's hover state |
|
bokan
2016/11/23 21:05:19
nit: "scrollbar can be..." -> "scrollbar's style d
|
| + bool hitNativeScrollbar = hitScrollbar && !hitScrollbar->isCustomScrollbar(); |
| + |
| + if (request.active() && m_frame && !hitNativeScrollbar) |
| m_frame->eventHandler().notifyElementActivated(); |
| - Element* innerElementInDocument = hitScrollbar ? nullptr : innerElement; |
| + Element* innerElementInDocument = hitNativeScrollbar ? nullptr : innerElement; |
| while (innerElementInDocument && innerElementInDocument->document() != this) { |
| innerElementInDocument->document().updateHoverActiveState( |
| request, innerElementInDocument, hitScrollbar); |
| @@ -6034,7 +6039,7 @@ void Document::updateHoverActiveState(const HitTestRequest& request, |
| updateDistribution(); |
| Element* oldActiveElement = activeHoverElement(); |
| - if (oldActiveElement && (!request.active() || hitScrollbar)) { |
| + if (oldActiveElement && (!request.active() || hitNativeScrollbar)) { |
| // 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. |