Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: Source/core/dom/Node.cpp

Issue 16599003: :hover style not applied on hover if its display property is different from original style's (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Patch Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 if (node == this) 1061 if (node == this)
1062 return true; 1062 return true;
1063 if (node->isDocumentFragment() && static_cast<const DocumentFragment*>(n ode)->isTemplateContent()) 1063 if (node->isDocumentFragment() && static_cast<const DocumentFragment*>(n ode)->isTemplateContent())
1064 node = static_cast<const TemplateContentDocumentFragment*>(node)->ho st(); 1064 node = static_cast<const TemplateContentDocumentFragment*>(node)->ho st();
1065 else 1065 else
1066 node = node->parentOrShadowHostNode(); 1066 node = node->parentOrShadowHostNode();
1067 } 1067 }
1068 return false; 1068 return false;
1069 } 1069 }
1070 1070
1071 void Node::attach() 1071 void Node::attach(const AttachContext&)
1072 { 1072 {
1073 ASSERT(!attached()); 1073 ASSERT(!attached());
1074 ASSERT(!renderer() || (renderer()->style() && (renderer()->parent() || rende rer()->isRenderView()))); 1074 ASSERT(!renderer() || (renderer()->style() && (renderer()->parent() || rende rer()->isRenderView())));
1075 1075
1076 // If this node got a renderer it may be the previousRenderer() of sibling t ext nodes and thus affect the 1076 // If this node got a renderer it may be the previousRenderer() of sibling t ext nodes and thus affect the
1077 // result of Text::textRendererIsNeeded() for those nodes. 1077 // result of Text::textRendererIsNeeded() for those nodes.
1078 if (renderer()) { 1078 if (renderer()) {
1079 for (Node* next = nextSibling(); next; next = next->nextSibling()) { 1079 for (Node* next = nextSibling(); next; next = next->nextSibling()) {
1080 if (next->renderer()) 1080 if (next->renderer())
1081 break; 1081 break;
(...skipping 22 matching lines...) Expand all
1104 1104
1105 #ifndef NDEBUG 1105 #ifndef NDEBUG
1106 static Node* detachingNode; 1106 static Node* detachingNode;
1107 1107
1108 bool Node::inDetach() const 1108 bool Node::inDetach() const
1109 { 1109 {
1110 return detachingNode == this; 1110 return detachingNode == this;
1111 } 1111 }
1112 #endif 1112 #endif
1113 1113
1114 void Node::detach() 1114 void Node::detach(const AttachContext& context)
1115 { 1115 {
1116 #ifndef NDEBUG 1116 #ifndef NDEBUG
1117 ASSERT(!detachingNode); 1117 ASSERT(!detachingNode);
1118 detachingNode = this; 1118 detachingNode = this;
1119 #endif 1119 #endif
1120 1120
1121 if (renderer()) 1121 if (renderer())
1122 renderer()->destroyAndCleanupAnonymousWrappers(); 1122 renderer()->destroyAndCleanupAnonymousWrappers();
1123 setRenderer(0); 1123 setRenderer(0);
1124 1124
1125 Document* doc = document(); 1125 // Do not remove the element's hovered and active status
1126 if (isUserActionElement()) { 1126 // if performing a reattach.
1127 if (hovered()) 1127 if (!context.performingReattach) {
1128 doc->hoveredNodeDetached(this); 1128 Document* doc = document();
1129 if (inActiveChain()) 1129 if (isUserActionElement()) {
1130 doc->activeChainNodeDetached(this); 1130 if (hovered())
1131 doc->userActionElements().didDetach(this); 1131 doc->hoveredNodeDetached(this);
1132 if (inActiveChain())
1133 doc->activeChainNodeDetached(this);
1134 doc->userActionElements().didDetach(this);
1135 }
1132 } 1136 }
1133 1137
1134 clearFlag(IsAttachedFlag); 1138 clearFlag(IsAttachedFlag);
1135 1139
1136 #ifndef NDEBUG 1140 #ifndef NDEBUG
1137 detachingNode = 0; 1141 detachingNode = 0;
1138 #endif 1142 #endif
1139 } 1143 }
1140 1144
1141 // FIXME: This code is used by editing. Seems like it could move over there and not pollute Node. 1145 // FIXME: This code is used by editing. Seems like it could move over there and not pollute Node.
(...skipping 1620 matching lines...) Expand 10 before | Expand all | Expand 10 after
2762 node->showTreeForThis(); 2766 node->showTreeForThis();
2763 } 2767 }
2764 2768
2765 void showNodePath(const WebCore::Node* node) 2769 void showNodePath(const WebCore::Node* node)
2766 { 2770 {
2767 if (node) 2771 if (node)
2768 node->showNodePathForThis(); 2772 node->showNodePathForThis();
2769 } 2773 }
2770 2774
2771 #endif 2775 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698