Index: third_party/WebKit/Source/core/dom/ContainerNode.cpp |
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.cpp b/third_party/WebKit/Source/core/dom/ContainerNode.cpp |
index c84626d91ccac8d02a52fa3d09eb7c94405555da..8275994bef0b7ad81c39ad4c8a291eb0873a85ef 100644 |
--- a/third_party/WebKit/Source/core/dom/ContainerNode.cpp |
+++ b/third_party/WebKit/Source/core/dom/ContainerNode.cpp |
@@ -1026,17 +1026,20 @@ void ContainerNode::setActive(bool down) |
Node::setActive(down); |
- // FIXME: Why does this not need to handle the display: none transition like :hover does? |
- if (layoutObject()) { |
- if (computedStyle()->affectedByActive()) { |
- StyleChangeType changeType = computedStyle()->hasPseudoStyle(PseudoIdFirstLetter) ? SubtreeStyleChange : LocalStyleChange; |
- setNeedsStyleRecalc(changeType, StyleChangeReasonForTracing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Active)); |
- } |
+ if (!layoutObject()) { |
if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByActive()) |
toElement(this)->pseudoStateChanged(CSSSelector::PseudoActive); |
rune
2016/06/24 12:28:51
The setHovered() method has an else here where it
ramya.v
2016/06/27 06:28:01
The else case is required in setHovered method, wi
|
+ return; |
+ } |
- LayoutTheme::theme().controlStateChanged(*layoutObject(), PressedControlState); |
+ if (computedStyle()->affectedByActive()) { |
+ StyleChangeType changeType = computedStyle()->hasPseudoStyle(PseudoIdFirstLetter) ? SubtreeStyleChange : LocalStyleChange; |
+ setNeedsStyleRecalc(changeType, StyleChangeReasonForTracing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Active)); |
} |
+ if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByActive()) |
+ toElement(this)->pseudoStateChanged(CSSSelector::PseudoActive); |
+ |
+ LayoutTheme::theme().controlStateChanged(*layoutObject(), PressedControlState); |
} |
void ContainerNode::setHovered(bool over) |