| 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) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
| 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 } | 443 } |
| 444 | 444 |
| 445 if (!beforeChild && !last->firstChild()) | 445 if (!beforeChild && !last->firstChild()) |
| 446 return nextToLast; | 446 return nextToLast; |
| 447 return last; | 447 return last; |
| 448 } | 448 } |
| 449 | 449 |
| 450 void RenderBlock::addChildToContinuation(RenderObject* newChild, RenderObject* b
eforeChild) | 450 void RenderBlock::addChildToContinuation(RenderObject* newChild, RenderObject* b
eforeChild) |
| 451 { | 451 { |
| 452 RenderBlock* flow = continuationBefore(beforeChild); | 452 RenderBlock* flow = continuationBefore(beforeChild); |
| 453 ASSERT(!beforeChild || beforeChild->parent()->isAnonymousColumnSpanBlock() |
| beforeChild->parent()->isRenderBlock()); | |
| 454 RenderBoxModelObject* beforeChildParent = 0; | 453 RenderBoxModelObject* beforeChildParent = 0; |
| 455 if (beforeChild) | 454 if (beforeChild) { |
| 456 beforeChildParent = toRenderBoxModelObject(beforeChild->parent()); | 455 beforeChildParent = toRenderBoxModelObject(beforeChild->parent()); |
| 457 else { | 456 // Don't attempt to insert into something that isn't a RenderBlockFlow (
block |
| 457 // container). While the DOM nodes of |beforeChild| and |newChild| are s
iblings, there may |
| 458 // be anonymous table wrapper objects around |beforeChild| on the layout
side. Therefore, |
| 459 // find the nearest RenderBlockFlow. If it turns out that the new render
er doesn't belong |
| 460 // inside the anonymous table, this will make sure that it's really put
on the outside. If |
| 461 // it turns out that it does belong inside it, the normal child insertio
n machinery will |
| 462 // make sure it ends up there, and at the right place too. We cannot jus
t guess that it's |
| 463 // going to be right under the parent of |beforeChild|. |
| 464 while (beforeChildParent && !beforeChildParent->isRenderBlockFlow()) { |
| 465 ASSERT(!beforeChildParent->virtualContinuation()); |
| 466 ASSERT(beforeChildParent->isAnonymous()); |
| 467 RELEASE_ASSERT(beforeChildParent != this); |
| 468 beforeChildParent = toRenderBoxModelObject(beforeChildParent->parent
()); |
| 469 } |
| 470 ASSERT(beforeChildParent); |
| 471 } else { |
| 458 RenderBoxModelObject* cont = flow->continuation(); | 472 RenderBoxModelObject* cont = flow->continuation(); |
| 459 if (cont) | 473 if (cont) |
| 460 beforeChildParent = cont; | 474 beforeChildParent = cont; |
| 461 else | 475 else |
| 462 beforeChildParent = flow; | 476 beforeChildParent = flow; |
| 463 } | 477 } |
| 464 | 478 |
| 465 if (newChild->isFloatingOrOutOfFlowPositioned()) { | 479 if (newChild->isFloatingOrOutOfFlowPositioned()) { |
| 466 beforeChildParent->addChildIgnoringContinuation(newChild, beforeChild); | 480 beforeChildParent->addChildIgnoringContinuation(newChild, beforeChild); |
| 467 return; | 481 return; |
| (...skipping 3479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3947 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const | 3961 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const |
| 3948 { | 3962 { |
| 3949 showRenderObject(); | 3963 showRenderObject(); |
| 3950 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) | 3964 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) |
| 3951 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); | 3965 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); |
| 3952 } | 3966 } |
| 3953 | 3967 |
| 3954 #endif | 3968 #endif |
| 3955 | 3969 |
| 3956 } // namespace blink | 3970 } // namespace blink |
| OLD | NEW |