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 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 // independent of the focused element changing. | 801 // independent of the focused element changing. |
802 void ContainerNode::focusStateChanged() | 802 void ContainerNode::focusStateChanged() |
803 { | 803 { |
804 // If we're just changing the window's active state and the focused node has
no | 804 // If we're just changing the window's active state and the focused node has
no |
805 // renderer we can just ignore the state change. | 805 // renderer we can just ignore the state change. |
806 if (!renderer()) | 806 if (!renderer()) |
807 return; | 807 return; |
808 // FIXME: This could probably setNeedsStyleRecalc(LocalStyleChange) in the a
ffectedByFocus case | 808 // FIXME: This could probably setNeedsStyleRecalc(LocalStyleChange) in the a
ffectedByFocus case |
809 // and only setNeedsStyleRecalc(SubtreeStyleChange) in the childrenAffectedB
yFocus case. | 809 // and only setNeedsStyleRecalc(SubtreeStyleChange) in the childrenAffectedB
yFocus case. |
810 if (renderStyle()->affectedByFocus() || (isElementNode() && toElement(this)-
>childrenAffectedByFocus())) | 810 if (renderStyle()->affectedByFocus() || (isElementNode() && toElement(this)-
>childrenAffectedByFocus())) |
811 setNeedsStyleRecalc(); | 811 setNeedsStyleRecalc(SubtreeStyleChange); |
812 if (renderer() && renderer()->style()->hasAppearance()) | 812 if (renderer() && renderer()->style()->hasAppearance()) |
813 RenderTheme::theme().stateChanged(renderer(), FocusState); | 813 RenderTheme::theme().stateChanged(renderer(), FocusState); |
814 } | 814 } |
815 | 815 |
816 void ContainerNode::setFocus(bool received) | 816 void ContainerNode::setFocus(bool received) |
817 { | 817 { |
818 if (focused() == received) | 818 if (focused() == received) |
819 return; | 819 return; |
820 | 820 |
821 Node::setFocus(received); | 821 Node::setFocus(received); |
822 | 822 |
823 focusStateChanged(); | 823 focusStateChanged(); |
824 // If :focus sets display: none, we lose focus but still need to recalc our
style. | 824 // If :focus sets display: none, we lose focus but still need to recalc our
style. |
825 if (!renderer() && !received) | 825 if (!renderer() && !received) |
826 setNeedsStyleRecalc(); | 826 setNeedsStyleRecalc(SubtreeStyleChange); |
827 } | 827 } |
828 | 828 |
829 void ContainerNode::setActive(bool down) | 829 void ContainerNode::setActive(bool down) |
830 { | 830 { |
831 if (down == active()) | 831 if (down == active()) |
832 return; | 832 return; |
833 | 833 |
834 Node::setActive(down); | 834 Node::setActive(down); |
835 | 835 |
836 // FIXME: Why does this not need to handle the display: none transition like
:hover does? | 836 // FIXME: Why does this not need to handle the display: none transition like
:hover does? |
837 if (renderer()) { | 837 if (renderer()) { |
838 if (renderStyle()->affectedByActive() || (isElementNode() && toElement(t
his)->childrenAffectedByActive())) | 838 if (renderStyle()->affectedByActive() || (isElementNode() && toElement(t
his)->childrenAffectedByActive())) |
839 setNeedsStyleRecalc(); | 839 setNeedsStyleRecalc(SubtreeStyleChange); |
840 if (renderStyle()->hasAppearance()) | 840 if (renderStyle()->hasAppearance()) |
841 RenderTheme::theme().stateChanged(renderer(), PressedState); | 841 RenderTheme::theme().stateChanged(renderer(), PressedState); |
842 } | 842 } |
843 } | 843 } |
844 | 844 |
845 void ContainerNode::setHovered(bool over) | 845 void ContainerNode::setHovered(bool over) |
846 { | 846 { |
847 if (over == hovered()) | 847 if (over == hovered()) |
848 return; | 848 return; |
849 | 849 |
850 Node::setHovered(over); | 850 Node::setHovered(over); |
851 | 851 |
852 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. | 852 // If :hover sets display: none we lose our hover but still need to recalc o
ur style. |
853 if (!renderer()) { | 853 if (!renderer()) { |
854 if (!over) | 854 if (!over) |
855 setNeedsStyleRecalc(); | 855 setNeedsStyleRecalc(SubtreeStyleChange); |
856 return; | 856 return; |
857 } | 857 } |
858 | 858 |
859 if (renderer()) { | 859 if (renderer()) { |
860 if (renderStyle()->affectedByHover() || (isElementNode() && toElement(th
is)->childrenAffectedByHover())) | 860 if (renderStyle()->affectedByHover() || (isElementNode() && toElement(th
is)->childrenAffectedByHover())) |
861 setNeedsStyleRecalc(); | 861 setNeedsStyleRecalc(SubtreeStyleChange); |
862 if (renderer() && renderer()->style()->hasAppearance()) | 862 if (renderer() && renderer()->style()->hasAppearance()) |
863 RenderTheme::theme().stateChanged(renderer(), HoverState); | 863 RenderTheme::theme().stateChanged(renderer(), HoverState); |
864 } | 864 } |
865 } | 865 } |
866 | 866 |
867 PassRefPtr<HTMLCollection> ContainerNode::children() | 867 PassRefPtr<HTMLCollection> ContainerNode::children() |
868 { | 868 { |
869 return ensureRareData().ensureNodeLists().addCacheWithAtomicName<HTMLCollect
ion>(this, NodeChildren); | 869 return ensureRareData().ensureNodeLists().addCacheWithAtomicName<HTMLCollect
ion>(this, NodeChildren); |
870 } | 870 } |
871 | 871 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 return true; | 1051 return true; |
1052 | 1052 |
1053 if (node->isElementNode() && toElement(node)->shadow()) | 1053 if (node->isElementNode() && toElement(node)->shadow()) |
1054 return true; | 1054 return true; |
1055 | 1055 |
1056 return false; | 1056 return false; |
1057 } | 1057 } |
1058 #endif | 1058 #endif |
1059 | 1059 |
1060 } // namespace WebCore | 1060 } // namespace WebCore |
OLD | NEW |