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

Unified Diff: Source/core/dom/Node.h

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 side-by-side diff with in-line comments
Download patch
Index: Source/core/dom/Node.h
diff --git a/Source/core/dom/Node.h b/Source/core/dom/Node.h
index b6524c8631b741a0afccb277e9eef1b5e79cd555..5ca66b7c809f21ddaf6ac8e13423cdffc7943c2c 100644
--- a/Source/core/dom/Node.h
+++ b/Source/core/dom/Node.h
@@ -525,20 +525,27 @@ public:
RenderBox* renderBox() const;
RenderBoxModelObject* renderBoxModelObject() const;
+ struct AttachContext {
eae 2013/06/11 19:56:32 Not a big fan of the complexity this introduces, I
stavila 2013/06/11 21:08:51 Could you elaborate a little bit on that? I'm not
+ RenderStyle* resolvedStyle;
+ bool performingReattach;
+
+ AttachContext() : resolvedStyle(0), performingReattach(false) { }
+ };
+
// Attaches this node to the rendering tree. This calculates the style to be applied to the node and creates an
// appropriate RenderObject which will be inserted into the tree (except when the style has display: none). This
// makes the node visible in the FrameView.
- virtual void attach();
+ virtual void attach(const AttachContext& = AttachContext());
// Detaches the node from the rendering tree, making it invisible in the rendered view. This method will remove
// the node's rendering object from the rendering tree and delete it.
- virtual void detach();
+ virtual void detach(const AttachContext& = AttachContext());
#ifndef NDEBUG
bool inDetach() const;
#endif
- void reattach();
+ void reattach(const AttachContext& = AttachContext());
void lazyReattachIfAttached();
ContainerNode* parentNodeForRenderingAndStyle();
@@ -879,11 +886,14 @@ inline ContainerNode* Node::parentNodeGuaranteedHostFree() const
return parentOrShadowHostNode();
}
-inline void Node::reattach()
+inline void Node::reattach(const AttachContext& context)
{
+ AttachContext reattachContext(context);
+ reattachContext.performingReattach = true;
+
if (attached())
- detach();
- attach();
+ detach(reattachContext);
+ attach(reattachContext);
}
inline void Node::lazyReattachIfAttached()

Powered by Google App Engine
This is Rietveld 408576698