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

Side by Side Diff: Source/core/rendering/RenderLayerModelObject.cpp

Issue 556993002: Revert "Don't layout when isSelfPaintingLayer() changes" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2010, 2012 Google Inc. All rights reserved. 7 * Copyright (C) 2010, 2012 Google Inc. All rights reserved.
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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 layer()->clipper().clearClipRectsIncludingDescendants(); 97 layer()->clipper().clearClipRectsIncludingDescendants();
98 } 98 }
99 } 99 }
100 100
101 RenderObject::styleWillChange(diff, newStyle); 101 RenderObject::styleWillChange(diff, newStyle);
102 } 102 }
103 103
104 void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt yle* oldStyle) 104 void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt yle* oldStyle)
105 { 105 {
106 bool hadTransform = hasTransform(); 106 bool hadTransform = hasTransform();
107 bool hadLayer = hasLayer();
108 bool layerWasSelfPainting = hadLayer && layer()->isSelfPaintingLayer();
107 109
108 RenderObject::styleDidChange(diff, oldStyle); 110 RenderObject::styleDidChange(diff, oldStyle);
109 updateFromStyle(); 111 updateFromStyle();
110 112
111 LayerType type = layerTypeRequired(); 113 LayerType type = layerTypeRequired();
112 if (type != NoLayer) { 114 if (type != NoLayer) {
113 if (!layer() && layerCreationAllowedForSubtree()) { 115 if (!layer() && layerCreationAllowedForSubtree()) {
114 if (s_wasFloating && isFloating()) 116 if (s_wasFloating && isFloating())
115 setChildNeedsLayout(); 117 setChildNeedsLayout();
116 createLayer(type); 118 createLayer(type);
(...skipping 12 matching lines...) Expand all
129 if (s_wasFloating && isFloating()) 131 if (s_wasFloating && isFloating())
130 setChildNeedsLayout(); 132 setChildNeedsLayout();
131 if (hadTransform) 133 if (hadTransform)
132 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); 134 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation();
133 } 135 }
134 136
135 if (layer()) { 137 if (layer()) {
136 // FIXME: Ideally we shouldn't need this setter but we can't easily infe r an overflow-only layer 138 // FIXME: Ideally we shouldn't need this setter but we can't easily infe r an overflow-only layer
137 // from the style. 139 // from the style.
138 layer()->setLayerType(type); 140 layer()->setLayerType(type);
141
139 layer()->styleChanged(diff, oldStyle); 142 layer()->styleChanged(diff, oldStyle);
143 if (hadLayer && layer()->isSelfPaintingLayer() != layerWasSelfPainting)
144 setChildNeedsLayout();
140 } 145 }
141 146
142 if (FrameView *frameView = view()->frameView()) { 147 if (FrameView *frameView = view()->frameView()) {
143 bool newStyleIsViewportConstained = style()->hasViewportConstrainedPosit ion(); 148 bool newStyleIsViewportConstained = style()->hasViewportConstrainedPosit ion();
144 bool oldStyleIsViewportConstrained = oldStyle && oldStyle->hasViewportCo nstrainedPosition(); 149 bool oldStyleIsViewportConstrained = oldStyle && oldStyle->hasViewportCo nstrainedPosition();
145 if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) { 150 if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) {
146 if (newStyleIsViewportConstained && layer()) 151 if (newStyleIsViewportConstained && layer())
147 frameView->addViewportConstrainedObject(this); 152 frameView->addViewportConstrainedObject(this);
148 else 153 else
149 frameView->removeViewportConstrainedObject(this); 154 frameView->removeViewportConstrainedObject(this);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 InvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationState, newPaintInvalidationContainer); 205 InvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationState, newPaintInvalidationContainer);
201 206
202 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, new PaintInvalidationContainer); 207 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, new PaintInvalidationContainer);
203 if (reason == InvalidationLocationChange || reason == InvalidationFull) 208 if (reason == InvalidationLocationChange || reason == InvalidationFull)
204 childTreeWalkState.setForceCheckForPaintInvalidation(); 209 childTreeWalkState.setForceCheckForPaintInvalidation();
205 RenderObject::invalidateTreeIfNeeded(childTreeWalkState); 210 RenderObject::invalidateTreeIfNeeded(childTreeWalkState);
206 } 211 }
207 212
208 } // namespace blink 213 } // namespace blink
209 214
OLDNEW
« no previous file with comments | « LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698