| 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 Apple Inc. All rights reserv
ed. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
| 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 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 void ContainerNode::focusStateChanged() | 812 void ContainerNode::focusStateChanged() |
| 813 { | 813 { |
| 814 // If we're just changing the window's active state and the focused node has
no | 814 // If we're just changing the window's active state and the focused node has
no |
| 815 // renderer we can just ignore the state change. | 815 // renderer we can just ignore the state change. |
| 816 if (!renderer()) | 816 if (!renderer()) |
| 817 return; | 817 return; |
| 818 | 818 |
| 819 if (renderStyle()->affectedByFocus() && renderStyle()->hasPseudoStyle(FIRST_
LETTER)) | 819 if (renderStyle()->affectedByFocus() && renderStyle()->hasPseudoStyle(FIRST_
LETTER)) |
| 820 setNeedsStyleRecalc(SubtreeStyleChange); | 820 setNeedsStyleRecalc(SubtreeStyleChange); |
| 821 else if (isElementNode() && toElement(this)->childrenAffectedByFocus()) | 821 else if (isElementNode() && toElement(this)->childrenAffectedByFocus()) |
| 822 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleStyleI
nvalidationForPseudoChange(CSSSelector::PseudoFocus, *toElement(this)); | 822 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().scheduleS
tyleInvalidationForPseudoChange(CSSSelector::PseudoFocus, *toElement(this)); |
| 823 else if (renderStyle()->affectedByFocus()) | 823 else if (renderStyle()->affectedByFocus()) |
| 824 setNeedsStyleRecalc(LocalStyleChange); | 824 setNeedsStyleRecalc(LocalStyleChange); |
| 825 | 825 |
| 826 if (renderer() && renderer()->style()->hasAppearance()) | 826 if (renderer() && renderer()->style()->hasAppearance()) |
| 827 RenderTheme::theme().stateChanged(renderer(), FocusState); | 827 RenderTheme::theme().stateChanged(renderer(), FocusState); |
| 828 } | 828 } |
| 829 | 829 |
| 830 void ContainerNode::setFocus(bool received) | 830 void ContainerNode::setFocus(bool received) |
| 831 { | 831 { |
| 832 if (focused() == received) | 832 if (focused() == received) |
| 833 return; | 833 return; |
| 834 | 834 |
| 835 Node::setFocus(received); | 835 Node::setFocus(received); |
| 836 | 836 |
| 837 focusStateChanged(); | 837 focusStateChanged(); |
| 838 | 838 |
| 839 if (renderer() || received) | 839 if (renderer() || received) |
| 840 return; | 840 return; |
| 841 | 841 |
| 842 // If :focus sets display: none, we lose focus but still need to recalc our
style. | 842 // If :focus sets display: none, we lose focus but still need to recalc our
style. |
| 843 if (isElementNode() && toElement(this)->childrenAffectedByFocus()) | 843 if (isElementNode() && toElement(this)->childrenAffectedByFocus()) |
| 844 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleStyleI
nvalidationForPseudoChange(CSSSelector::PseudoFocus, *toElement(this)); | 844 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().scheduleS
tyleInvalidationForPseudoChange(CSSSelector::PseudoFocus, *toElement(this)); |
| 845 else | 845 else |
| 846 setNeedsStyleRecalc(LocalStyleChange); | 846 setNeedsStyleRecalc(LocalStyleChange); |
| 847 } | 847 } |
| 848 | 848 |
| 849 void ContainerNode::setActive(bool down) | 849 void ContainerNode::setActive(bool down) |
| 850 { | 850 { |
| 851 if (down == active()) | 851 if (down == active()) |
| 852 return; | 852 return; |
| 853 | 853 |
| 854 Node::setActive(down); | 854 Node::setActive(down); |
| 855 | 855 |
| 856 // FIXME: Why does this not need to handle the display: none transition like
:hover does? | 856 // FIXME: Why does this not need to handle the display: none transition like
:hover does? |
| 857 if (renderer()) { | 857 if (renderer()) { |
| 858 if (renderStyle()->affectedByActive() && renderStyle()->hasPseudoStyle(F
IRST_LETTER)) | 858 if (renderStyle()->affectedByActive() && renderStyle()->hasPseudoStyle(F
IRST_LETTER)) |
| 859 setNeedsStyleRecalc(SubtreeStyleChange); | 859 setNeedsStyleRecalc(SubtreeStyleChange); |
| 860 else if (isElementNode() && toElement(this)->childrenAffectedByActive()) | 860 else if (isElementNode() && toElement(this)->childrenAffectedByActive()) |
| 861 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleSt
yleInvalidationForPseudoChange(CSSSelector::PseudoActive, *toElement(this)); | 861 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().sched
uleStyleInvalidationForPseudoChange(CSSSelector::PseudoActive, *toElement(this))
; |
| 862 else if (renderStyle()->affectedByActive()) | 862 else if (renderStyle()->affectedByActive()) |
| 863 setNeedsStyleRecalc(LocalStyleChange); | 863 setNeedsStyleRecalc(LocalStyleChange); |
| 864 | 864 |
| 865 if (renderStyle()->hasAppearance()) | 865 if (renderStyle()->hasAppearance()) |
| 866 RenderTheme::theme().stateChanged(renderer(), PressedState); | 866 RenderTheme::theme().stateChanged(renderer(), PressedState); |
| 867 } | 867 } |
| 868 } | 868 } |
| 869 | 869 |
| 870 void ContainerNode::setHovered(bool over) | 870 void ContainerNode::setHovered(bool over) |
| 871 { | 871 { |
| 872 if (over == hovered()) | 872 if (over == hovered()) |
| 873 return; | 873 return; |
| 874 | 874 |
| 875 Node::setHovered(over); | 875 Node::setHovered(over); |
| 876 | 876 |
| 877 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. | 877 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. |
| 878 if (!renderer()) { | 878 if (!renderer()) { |
| 879 if (over) | 879 if (over) |
| 880 return; | 880 return; |
| 881 if (isElementNode() && toElement(this)->childrenAffectedByHover()) | 881 if (isElementNode() && toElement(this)->childrenAffectedByHover()) |
| 882 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleSt
yleInvalidationForPseudoChange(CSSSelector::PseudoHover, *toElement(this)); | 882 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().sched
uleStyleInvalidationForPseudoChange(CSSSelector::PseudoHover, *toElement(this)); |
| 883 else | 883 else |
| 884 setNeedsStyleRecalc(LocalStyleChange); | 884 setNeedsStyleRecalc(LocalStyleChange); |
| 885 return; | 885 return; |
| 886 } | 886 } |
| 887 | 887 |
| 888 if (renderStyle()->affectedByHover() && renderStyle()->hasPseudoStyle(FIRST_
LETTER)) | 888 if (renderStyle()->affectedByHover() && renderStyle()->hasPseudoStyle(FIRST_
LETTER)) |
| 889 setNeedsStyleRecalc(SubtreeStyleChange); | 889 setNeedsStyleRecalc(SubtreeStyleChange); |
| 890 else if (isElementNode() && toElement(this)->childrenAffectedByHover()) | 890 else if (isElementNode() && toElement(this)->childrenAffectedByHover()) |
| 891 document().styleResolver()->ensureUpdatedRuleFeatureSet().scheduleStyleI
nvalidationForPseudoChange(CSSSelector::PseudoHover, *toElement(this)); | 891 document().ensureStyleResolver().ensureUpdatedRuleFeatureSet().scheduleS
tyleInvalidationForPseudoChange(CSSSelector::PseudoHover, *toElement(this)); |
| 892 else if (renderStyle()->affectedByHover()) | 892 else if (renderStyle()->affectedByHover()) |
| 893 setNeedsStyleRecalc(LocalStyleChange); | 893 setNeedsStyleRecalc(LocalStyleChange); |
| 894 | 894 |
| 895 if (renderer()->style()->hasAppearance()) | 895 if (renderer()->style()->hasAppearance()) |
| 896 RenderTheme::theme().stateChanged(renderer(), HoverState); | 896 RenderTheme::theme().stateChanged(renderer(), HoverState); |
| 897 } | 897 } |
| 898 | 898 |
| 899 PassRefPtr<HTMLCollection> ContainerNode::children() | 899 PassRefPtr<HTMLCollection> ContainerNode::children() |
| 900 { | 900 { |
| 901 return ensureRareData().ensureNodeLists().addCache<HTMLCollection>(*this, No
deChildren); | 901 return ensureRareData().ensureNodeLists().addCache<HTMLCollection>(*this, No
deChildren); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 return true; | 1197 return true; |
| 1198 | 1198 |
| 1199 if (node->isElementNode() && toElement(node)->shadow()) | 1199 if (node->isElementNode() && toElement(node)->shadow()) |
| 1200 return true; | 1200 return true; |
| 1201 | 1201 |
| 1202 return false; | 1202 return false; |
| 1203 } | 1203 } |
| 1204 #endif | 1204 #endif |
| 1205 | 1205 |
| 1206 } // namespace WebCore | 1206 } // namespace WebCore |
| OLD | NEW |