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) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 static bool isBeforeAfterContentGeneratedByAncestor(RenderObject* renderer, Rend
erObject* beforeAfterContent) | 259 static bool isBeforeAfterContentGeneratedByAncestor(RenderObject* renderer, Rend
erObject* beforeAfterContent) |
260 { | 260 { |
261 while (renderer) { | 261 while (renderer) { |
262 if (renderer->generatingNode() == beforeAfterContent->generatingNode()) | 262 if (renderer->generatingNode() == beforeAfterContent->generatingNode()) |
263 return true; | 263 return true; |
264 renderer = renderer->parent(); | 264 renderer = renderer->parent(); |
265 } | 265 } |
266 return false; | 266 return false; |
267 } | 267 } |
268 | 268 |
| 269 RenderTable* RenderObject::createAnonymousTable() const |
| 270 { |
| 271 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style()); |
| 272 newStyle->setDisplay(TABLE); |
| 273 |
| 274 RenderTable* table = new (renderArena()) RenderTable(document() /* is anonym
ous */); |
| 275 table->setStyle(newStyle.release()); |
| 276 return table; |
| 277 } |
| 278 |
269 void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) | 279 void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) |
270 { | 280 { |
271 RenderObjectChildList* children = virtualChildren(); | 281 RenderObjectChildList* children = virtualChildren(); |
272 ASSERT(children); | 282 ASSERT(children); |
273 if (!children) | 283 if (!children) |
274 return; | 284 return; |
275 | 285 |
276 RenderObject* beforeContent = 0; | 286 RenderObject* beforeContent = 0; |
277 bool beforeChildHasBeforeAndAfterContent = false; | 287 bool beforeChildHasBeforeAndAfterContent = false; |
278 if (beforeChild && (beforeChild->isTable() || beforeChild->isTableSection()
|| beforeChild->isTableRow() || beforeChild->isTableCell())) { | 288 if (beforeChild && (beforeChild->isTable() || beforeChild->isTableSection()
|| beforeChild->isTableRow() || beforeChild->isTableCell())) { |
(...skipping 24 matching lines...) Expand all Loading... |
303 if (needsTable && isTableCell() && !children->firstChild() && !newChild-
>isTableCell()) | 313 if (needsTable && isTableCell() && !children->firstChild() && !newChild-
>isTableCell()) |
304 needsTable = false; | 314 needsTable = false; |
305 } | 315 } |
306 | 316 |
307 if (needsTable) { | 317 if (needsTable) { |
308 RenderTable* table; | 318 RenderTable* table; |
309 RenderObject* afterChild = beforeChild ? beforeChild->previousSibling()
: children->lastChild(); | 319 RenderObject* afterChild = beforeChild ? beforeChild->previousSibling()
: children->lastChild(); |
310 if (afterChild && afterChild->isAnonymous() && afterChild->isTable() &&
!afterChild->isBeforeContent()) | 320 if (afterChild && afterChild->isAnonymous() && afterChild->isTable() &&
!afterChild->isBeforeContent()) |
311 table = toRenderTable(afterChild); | 321 table = toRenderTable(afterChild); |
312 else { | 322 else { |
313 table = new (renderArena()) RenderTable(document() /* is anonymous *
/); | 323 table = createAnonymousTable(); |
314 RefPtr<RenderStyle> newStyle = RenderStyle::create(); | |
315 newStyle->inheritFrom(style()); | |
316 newStyle->setDisplay(TABLE); | |
317 table->setStyle(newStyle.release()); | |
318 addChild(table, beforeChild); | 324 addChild(table, beforeChild); |
319 } | 325 } |
320 table->addChild(newChild); | 326 table->addChild(newChild); |
321 } else { | 327 } else { |
322 // Just add it... | 328 // Just add it... |
323 children->insertChildNode(this, newChild, beforeChild); | 329 children->insertChildNode(this, newChild, beforeChild); |
324 } | 330 } |
325 | 331 |
326 if (newChild->isText() && newChild->style()->textTransform() == CAPITALIZE)
{ | 332 if (newChild->isText() && newChild->style()->textTransform() == CAPITALIZE)
{ |
327 RefPtr<StringImpl> textToTransform = toRenderText(newChild)->originalTex
t(); | 333 RefPtr<StringImpl> textToTransform = toRenderText(newChild)->originalTex
t(); |
(...skipping 2492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2820 { | 2826 { |
2821 if (object1) { | 2827 if (object1) { |
2822 const WebCore::RenderObject* root = object1; | 2828 const WebCore::RenderObject* root = object1; |
2823 while (root->parent()) | 2829 while (root->parent()) |
2824 root = root->parent(); | 2830 root = root->parent(); |
2825 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 2831 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
2826 } | 2832 } |
2827 } | 2833 } |
2828 | 2834 |
2829 #endif | 2835 #endif |
OLD | NEW |