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, 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, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
7 * Copyright (C) 2011 Google Inc. All rights reserved. | 7 * Copyright (C) 2011 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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 | 155 |
156 bool NodeRenderingContext::shouldCreateRenderer() const | 156 bool NodeRenderingContext::shouldCreateRenderer() const |
157 { | 157 { |
158 if (!m_renderingParent) | 158 if (!m_renderingParent) |
159 return false; | 159 return false; |
160 RenderObject* parentRenderer = this->parentRenderer(); | 160 RenderObject* parentRenderer = this->parentRenderer(); |
161 if (!parentRenderer) | 161 if (!parentRenderer) |
162 return false; | 162 return false; |
163 if (!parentRenderer->canHaveChildren()) | 163 if (!parentRenderer->canHaveChildren()) |
164 return false; | 164 return false; |
165 if (!m_renderingParent->childShouldCreateRenderer(*this)) | 165 if (!m_renderingParent->childShouldCreateRenderer(*m_node)) |
166 return false; | 166 return false; |
167 return true; | 167 return true; |
168 } | 168 } |
169 | 169 |
170 // Check the specific case of elements that are children of regions but are flow
ed into a flow thread themselves. | 170 // Check the specific case of elements that are children of regions but are flow
ed into a flow thread themselves. |
171 bool NodeRenderingContext::elementInsideRegionNeedsRenderer() | 171 bool NodeRenderingContext::elementInsideRegionNeedsRenderer() |
172 { | 172 { |
173 Element* element = toElement(m_node); | 173 Element* element = toElement(m_node); |
174 bool elementInsideRegionNeedsRenderer = false; | 174 bool elementInsideRegionNeedsRenderer = false; |
175 RenderObject* parentRenderer = this->parentRenderer(); | 175 RenderObject* parentRenderer = this->parentRenderer(); |
176 if ((parentRenderer && !parentRenderer->canHaveChildren() && parentRenderer-
>isRenderRegion()) | 176 if ((parentRenderer && !parentRenderer->canHaveChildren() && parentRenderer-
>isRenderRegion()) |
177 || (!parentRenderer && element->parentElement() && element->parentElemen
t()->isInsideRegion())) { | 177 || (!parentRenderer && element->parentElement() && element->parentElemen
t()->isInsideRegion())) { |
178 | 178 |
179 if (!m_style) | 179 if (!m_style) |
180 m_style = element->styleForRenderer(); | 180 m_style = element->styleForRenderer(); |
181 | 181 |
182 elementInsideRegionNeedsRenderer = element->shouldMoveToFlowThread(m_sty
le.get()); | 182 elementInsideRegionNeedsRenderer = element->shouldMoveToFlowThread(m_sty
le.get()); |
183 | 183 |
184 // Children of this element will only be allowed to be flowed into other
flow-threads if display is NOT none. | 184 // Children of this element will only be allowed to be flowed into other
flow-threads if display is NOT none. |
185 if (element->rendererIsNeeded(*this)) | 185 if (element->rendererIsNeeded(*m_style)) |
186 element->setIsInsideRegion(true); | 186 element->setIsInsideRegion(true); |
187 } | 187 } |
188 | 188 |
189 return elementInsideRegionNeedsRenderer; | 189 return elementInsideRegionNeedsRenderer; |
190 } | 190 } |
191 | 191 |
192 void NodeRenderingContext::moveToFlowThreadIfNeeded() | 192 void NodeRenderingContext::moveToFlowThreadIfNeeded() |
193 { | 193 { |
194 if (!RuntimeEnabledFeatures::cssRegionsEnabled()) | 194 if (!RuntimeEnabledFeatures::cssRegionsEnabled()) |
195 return; | 195 return; |
(...skipping 21 matching lines...) Expand all Loading... |
217 return; | 217 return; |
218 | 218 |
219 // If m_style is already available, this scope shouldn't attempt to trigger
animation updates. | 219 // If m_style is already available, this scope shouldn't attempt to trigger
animation updates. |
220 CSSAnimationUpdateScope cssAnimationUpdateScope(m_style ? 0 : element); | 220 CSSAnimationUpdateScope cssAnimationUpdateScope(m_style ? 0 : element); |
221 if (!m_style) | 221 if (!m_style) |
222 m_style = element->styleForRenderer(); | 222 m_style = element->styleForRenderer(); |
223 ASSERT(m_style); | 223 ASSERT(m_style); |
224 | 224 |
225 moveToFlowThreadIfNeeded(); | 225 moveToFlowThreadIfNeeded(); |
226 | 226 |
227 if (!element->rendererIsNeeded(*this)) | 227 if (!element->rendererIsNeeded(*m_style)) |
228 return; | 228 return; |
229 | 229 |
230 RenderObject* newRenderer = element->createRenderer(m_style.get()); | 230 RenderObject* newRenderer = element->createRenderer(m_style.get()); |
231 if (!newRenderer) | 231 if (!newRenderer) |
232 return; | 232 return; |
233 | 233 |
234 RenderObject* parentRenderer = this->parentRenderer(); | 234 RenderObject* parentRenderer = this->parentRenderer(); |
235 | 235 |
236 if (!parentRenderer->isChildAllowed(newRenderer, m_style.get())) { | 236 if (!parentRenderer->isChildAllowed(newRenderer, m_style.get())) { |
237 newRenderer->destroy(); | 237 newRenderer->destroy(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); | 286 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); |
287 | 287 |
288 RenderObject* nextRenderer = this->nextRenderer(); | 288 RenderObject* nextRenderer = this->nextRenderer(); |
289 textNode->setRenderer(newRenderer); | 289 textNode->setRenderer(newRenderer); |
290 // Parent takes care of the animations, no need to call setAnimatableStyle. | 290 // Parent takes care of the animations, no need to call setAnimatableStyle. |
291 newRenderer->setStyle(m_style.release()); | 291 newRenderer->setStyle(m_style.release()); |
292 parentRenderer->addChild(newRenderer, nextRenderer); | 292 parentRenderer->addChild(newRenderer, nextRenderer); |
293 } | 293 } |
294 | 294 |
295 } | 295 } |
OLD | NEW |