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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 static bool isBeforeAfterContentGeneratedByAncestor(RenderObject* renderer, Rend
erObject* beforeAfterContent) | 276 static bool isBeforeAfterContentGeneratedByAncestor(RenderObject* renderer, Rend
erObject* beforeAfterContent) |
277 { | 277 { |
278 while (renderer) { | 278 while (renderer) { |
279 if (renderer->generatingNode() == beforeAfterContent->generatingNode()) | 279 if (renderer->generatingNode() == beforeAfterContent->generatingNode()) |
280 return true; | 280 return true; |
281 renderer = renderer->parent(); | 281 renderer = renderer->parent(); |
282 } | 282 } |
283 return false; | 283 return false; |
284 } | 284 } |
285 | 285 |
| 286 RenderTable* RenderObject::createAnonymousTable() const |
| 287 { |
| 288 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style()); |
| 289 newStyle->setDisplay(TABLE); |
| 290 |
| 291 RenderTable* table = new (renderArena()) RenderTable(document() /* is anonym
ous */); |
| 292 table->setStyle(newStyle.release()); |
| 293 return table; |
| 294 } |
| 295 |
286 void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) | 296 void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) |
287 { | 297 { |
288 RenderObjectChildList* children = virtualChildren(); | 298 RenderObjectChildList* children = virtualChildren(); |
289 ASSERT(children); | 299 ASSERT(children); |
290 if (!children) | 300 if (!children) |
291 return; | 301 return; |
292 | 302 |
293 RenderObject* beforeContent = 0; | 303 RenderObject* beforeContent = 0; |
294 bool beforeChildHasBeforeAndAfterContent = false; | 304 bool beforeChildHasBeforeAndAfterContent = false; |
295 if (beforeChild && (beforeChild->isTable() || beforeChild->isTableSection()
|| beforeChild->isTableRow() || beforeChild->isTableCell())) { | 305 if (beforeChild && (beforeChild->isTable() || beforeChild->isTableSection()
|| beforeChild->isTableRow() || beforeChild->isTableCell())) { |
(...skipping 24 matching lines...) Expand all Loading... |
320 if (needsTable && isTableCell() && !children->firstChild() && !newChild-
>isTableCell()) | 330 if (needsTable && isTableCell() && !children->firstChild() && !newChild-
>isTableCell()) |
321 needsTable = false; | 331 needsTable = false; |
322 } | 332 } |
323 | 333 |
324 if (needsTable) { | 334 if (needsTable) { |
325 RenderTable* table; | 335 RenderTable* table; |
326 RenderObject* afterChild = beforeChild ? beforeChild->previousSibling()
: children->lastChild(); | 336 RenderObject* afterChild = beforeChild ? beforeChild->previousSibling()
: children->lastChild(); |
327 if (afterChild && afterChild->isAnonymous() && afterChild->isTable() &&
!afterChild->isBeforeContent()) | 337 if (afterChild && afterChild->isAnonymous() && afterChild->isTable() &&
!afterChild->isBeforeContent()) |
328 table = toRenderTable(afterChild); | 338 table = toRenderTable(afterChild); |
329 else { | 339 else { |
330 table = new (renderArena()) RenderTable(document() /* is anonymous *
/); | 340 table = createAnonymousTable(); |
331 RefPtr<RenderStyle> newStyle = RenderStyle::create(); | |
332 newStyle->inheritFrom(style()); | |
333 newStyle->setDisplay(TABLE); | |
334 table->setStyle(newStyle.release()); | |
335 addChild(table, beforeChild); | 341 addChild(table, beforeChild); |
336 } | 342 } |
337 table->addChild(newChild); | 343 table->addChild(newChild); |
338 } else { | 344 } else { |
339 // Just add it... | 345 // Just add it... |
340 children->insertChildNode(this, newChild, beforeChild); | 346 children->insertChildNode(this, newChild, beforeChild); |
341 } | 347 } |
342 | 348 |
343 if (newChild->isText() && newChild->style()->textTransform() == CAPITALIZE)
{ | 349 if (newChild->isText() && newChild->style()->textTransform() == CAPITALIZE)
{ |
344 RefPtr<StringImpl> textToTransform = toRenderText(newChild)->originalTex
t(); | 350 RefPtr<StringImpl> textToTransform = toRenderText(newChild)->originalTex
t(); |
(...skipping 2476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2821 { | 2827 { |
2822 if (object1) { | 2828 if (object1) { |
2823 const WebCore::RenderObject* root = object1; | 2829 const WebCore::RenderObject* root = object1; |
2824 while (root->parent()) | 2830 while (root->parent()) |
2825 root = root->parent(); | 2831 root = root->parent(); |
2826 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 2832 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
2827 } | 2833 } |
2828 } | 2834 } |
2829 | 2835 |
2830 #endif | 2836 #endif |
OLD | NEW |