OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights
reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights
reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1075 { | 1075 { |
1076 // If we're just changing the window's active state and the focused node has
no | 1076 // If we're just changing the window's active state and the focused node has
no |
1077 // layoutObject we can just ignore the state change. | 1077 // layoutObject we can just ignore the state change. |
1078 if (!layoutObject()) | 1078 if (!layoutObject()) |
1079 return; | 1079 return; |
1080 | 1080 |
1081 if (styleChangeType() < SubtreeStyleChange) { | 1081 if (styleChangeType() < SubtreeStyleChange) { |
1082 if (computedStyle()->affectedByFocus() && computedStyle()->hasPseudoStyl
e(FIRST_LETTER)) | 1082 if (computedStyle()->affectedByFocus() && computedStyle()->hasPseudoStyl
e(FIRST_LETTER)) |
1083 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus
)); | 1083 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus
)); |
1084 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedB
yFocus()) | 1084 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedB
yFocus()) |
1085 document().styleEngine().pseudoStateChangedForElement(CSSSelector::P
seudoFocus, *toElement(this)); | 1085 toElement(this)->pseudoStateChanged(CSSSelector::PseudoFocus); |
1086 else if (computedStyle()->affectedByFocus()) | 1086 else if (computedStyle()->affectedByFocus()) |
1087 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus))
; | 1087 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus))
; |
1088 } | 1088 } |
1089 | 1089 |
1090 LayoutTheme::theme().controlStateChanged(*layoutObject(), FocusControlState)
; | 1090 LayoutTheme::theme().controlStateChanged(*layoutObject(), FocusControlState)
; |
1091 } | 1091 } |
1092 | 1092 |
1093 void ContainerNode::setFocus(bool received) | 1093 void ContainerNode::setFocus(bool received) |
1094 { | 1094 { |
1095 // Recurse up author shadow trees to mark shadow hosts if it matches :focus. | 1095 // Recurse up author shadow trees to mark shadow hosts if it matches :focus. |
(...skipping 15 matching lines...) Expand all Loading... |
1111 return; | 1111 return; |
1112 | 1112 |
1113 Node::setFocus(received); | 1113 Node::setFocus(received); |
1114 | 1114 |
1115 focusStateChanged(); | 1115 focusStateChanged(); |
1116 | 1116 |
1117 if (layoutObject() || received) | 1117 if (layoutObject() || received) |
1118 return; | 1118 return; |
1119 | 1119 |
1120 // If :focus sets display: none, we lose focus but still need to recalc our
style. | 1120 // If :focus sets display: none, we lose focus but still need to recalc our
style. |
1121 if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByFocus()
&& styleChangeType() < SubtreeStyleChange) | 1121 if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByFocus()) |
1122 document().styleEngine().pseudoStateChangedForElement(CSSSelector::Pseud
oFocus, *toElement(this)); | 1122 toElement(this)->pseudoStateChanged(CSSSelector::PseudoFocus); |
1123 else | 1123 else |
1124 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::creat
eWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus)); | 1124 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::creat
eWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Focus)); |
1125 } | 1125 } |
1126 | 1126 |
1127 void ContainerNode::setActive(bool down) | 1127 void ContainerNode::setActive(bool down) |
1128 { | 1128 { |
1129 if (down == active()) | 1129 if (down == active()) |
1130 return; | 1130 return; |
1131 | 1131 |
1132 Node::setActive(down); | 1132 Node::setActive(down); |
1133 | 1133 |
1134 // FIXME: Why does this not need to handle the display: none transition like
:hover does? | 1134 // FIXME: Why does this not need to handle the display: none transition like
:hover does? |
1135 if (layoutObject()) { | 1135 if (layoutObject()) { |
1136 if (styleChangeType() < SubtreeStyleChange) { | 1136 if (styleChangeType() < SubtreeStyleChange) { |
1137 if (computedStyle()->affectedByActive() && computedStyle()->hasPseud
oStyle(FIRST_LETTER)) | 1137 if (computedStyle()->affectedByActive() && computedStyle()->hasPseud
oStyle(FIRST_LETTER)) |
1138 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTrac
ing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::A
ctive)); | 1138 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTrac
ing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::A
ctive)); |
1139 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffec
tedByActive()) | 1139 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffec
tedByActive()) |
1140 document().styleEngine().pseudoStateChangedForElement(CSSSelecto
r::PseudoActive, *toElement(this)); | 1140 toElement(this)->pseudoStateChanged(CSSSelector::PseudoActive); |
1141 else if (computedStyle()->affectedByActive()) | 1141 else if (computedStyle()->affectedByActive()) |
1142 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracin
g::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Act
ive)); | 1142 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracin
g::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Act
ive)); |
1143 } | 1143 } |
1144 | 1144 |
1145 LayoutTheme::theme().controlStateChanged(*layoutObject(), PressedControl
State); | 1145 LayoutTheme::theme().controlStateChanged(*layoutObject(), PressedControl
State); |
1146 } | 1146 } |
1147 } | 1147 } |
1148 | 1148 |
1149 void ContainerNode::setHovered(bool over) | 1149 void ContainerNode::setHovered(bool over) |
1150 { | 1150 { |
1151 if (over == hovered()) | 1151 if (over == hovered()) |
1152 return; | 1152 return; |
1153 | 1153 |
1154 Node::setHovered(over); | 1154 Node::setHovered(over); |
1155 | 1155 |
1156 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. | 1156 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. |
1157 if (!layoutObject()) { | 1157 if (!layoutObject()) { |
1158 if (over) | 1158 if (over) |
1159 return; | 1159 return; |
1160 if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByHove
r() && styleChangeType() < SubtreeStyleChange) | 1160 if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedByHove
r()) |
1161 document().styleEngine().pseudoStateChangedForElement(CSSSelector::P
seudoHover, *toElement(this)); | 1161 toElement(this)->pseudoStateChanged(CSSSelector::PseudoHover); |
1162 else | 1162 else |
1163 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover))
; | 1163 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover))
; |
1164 return; | 1164 return; |
1165 } | 1165 } |
1166 | 1166 |
1167 if (styleChangeType() < SubtreeStyleChange) { | 1167 if (styleChangeType() < SubtreeStyleChange) { |
1168 if (computedStyle()->affectedByHover() && computedStyle()->hasPseudoStyl
e(FIRST_LETTER)) | 1168 if (computedStyle()->affectedByHover() && computedStyle()->hasPseudoStyl
e(FIRST_LETTER)) |
1169 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover
)); | 1169 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing:
:createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover
)); |
1170 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedB
yHover()) | 1170 else if (isElementNode() && toElement(this)->childrenOrSiblingsAffectedB
yHover()) |
1171 document().styleEngine().pseudoStateChangedForElement(CSSSelector::P
seudoHover, *toElement(this)); | 1171 toElement(this)->pseudoStateChanged(CSSSelector::PseudoHover); |
1172 else if (computedStyle()->affectedByHover()) | 1172 else if (computedStyle()->affectedByHover()) |
1173 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover))
; | 1173 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracing::c
reateWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Hover))
; |
1174 } | 1174 } |
1175 | 1175 |
1176 LayoutTheme::theme().controlStateChanged(*layoutObject(), HoverControlState)
; | 1176 LayoutTheme::theme().controlStateChanged(*layoutObject(), HoverControlState)
; |
1177 } | 1177 } |
1178 | 1178 |
1179 PassRefPtrWillBeRawPtr<HTMLCollection> ContainerNode::children() | 1179 PassRefPtrWillBeRawPtr<HTMLCollection> ContainerNode::children() |
1180 { | 1180 { |
1181 return ensureCachedCollection<HTMLCollection>(NodeChildren); | 1181 return ensureCachedCollection<HTMLCollection>(NodeChildren); |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 return true; | 1527 return true; |
1528 | 1528 |
1529 if (node->isElementNode() && toElement(node)->shadow()) | 1529 if (node->isElementNode() && toElement(node)->shadow()) |
1530 return true; | 1530 return true; |
1531 | 1531 |
1532 return false; | 1532 return false; |
1533 } | 1533 } |
1534 #endif | 1534 #endif |
1535 | 1535 |
1536 } // namespace blink | 1536 } // namespace blink |
OLD | NEW |