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

Unified Diff: Source/WebCore/rendering/RenderLayerModelObject.cpp

Issue 13679002: Add StyleChangeState to get rid of a bunch of static state in the render tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 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/WebCore/rendering/RenderLayerModelObject.cpp
diff --git a/Source/WebCore/rendering/RenderLayerModelObject.cpp b/Source/WebCore/rendering/RenderLayerModelObject.cpp
index ec7d69be201065374c4e88fd5ccff9bfc2a24b4e..22cb8b7a1ea19fae67921ffb1069ebed89d9f63e 100644
--- a/Source/WebCore/rendering/RenderLayerModelObject.cpp
+++ b/Source/WebCore/rendering/RenderLayerModelObject.cpp
@@ -33,11 +33,6 @@ using namespace std;
namespace WebCore {
-bool RenderLayerModelObject::s_wasFloating = false;
-bool RenderLayerModelObject::s_hadLayer = false;
-bool RenderLayerModelObject::s_hadTransform = false;
-bool RenderLayerModelObject::s_layerWasSelfPainting = false;
-
RenderLayerModelObject::RenderLayerModelObject(ContainerNode* node)
: RenderObject(node)
, m_layer(0)
@@ -90,13 +85,12 @@ void RenderLayerModelObject::willBeDestroyed()
RenderObject::willBeDestroyed();
}
-void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle)
+void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle, StyleChangeState& state)
{
- s_wasFloating = isFloating();
- s_hadLayer = hasLayer();
- s_hadTransform = hasTransform();
- if (s_hadLayer)
- s_layerWasSelfPainting = layer()->isSelfPaintingLayer();
+ state.wasFloating = isFloating();
+ state.hadLayer = hasLayer();
+ state.hadTransform = hasTransform();
+ state.layerWasSelfPainting = hasSelfPaintingLayer();
eseidel 2013/04/05 01:50:36 This no longer needs to be conditional?
esprehn 2013/04/17 03:29:01 The conditional is still there, it's just inside h
// If our z-index changes value or our visibility changes,
// we need to dirty our stacking context's z-order list.
@@ -137,17 +131,17 @@ void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderS
}
}
- RenderObject::styleWillChange(diff, newStyle);
+ RenderObject::styleWillChange(diff, newStyle, state);
}
-void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
+void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle, const StyleChangeState& state)
{
- RenderObject::styleDidChange(diff, oldStyle);
- updateFromStyle();
+ RenderObject::styleDidChange(diff, oldStyle, state);
+ updateFromStyle(state);
if (requiresLayer()) {
if (!layer() && layerCreationAllowedForSubtree()) {
- if (s_wasFloating && isFloating())
+ if (state.wasFloating && isFloating())
setChildNeedsLayout(true);
ensureLayer();
if (parent() && !needsLayout() && containingBlock()) {
@@ -161,15 +155,15 @@ void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt
setHasTransform(false); // Either a transform wasn't specified or the object doesn't support transforms, so just null out the bit.
setHasReflection(false);
layer()->removeOnlyThisLayer(); // calls destroyLayer() which clears m_layer
- if (s_wasFloating && isFloating())
+ if (state.wasFloating && isFloating())
setChildNeedsLayout(true);
- if (s_hadTransform)
+ if (state.hadTransform)
setNeedsLayoutAndPrefWidthsRecalc();
}
if (layer()) {
layer()->styleChanged(diff, oldStyle);
- if (s_hadLayer && layer()->isSelfPaintingLayer() != s_layerWasSelfPainting)
+ if (state.hadLayer && layer()->isSelfPaintingLayer() != state.layerWasSelfPainting)
setChildNeedsLayout(true);
}

Powered by Google App Engine
This is Rietveld 408576698