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 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 } | 765 } |
766 return columnsBlockAncestor; | 766 return columnsBlockAncestor; |
767 } | 767 } |
768 | 768 |
769 void RenderBlock::addChildIgnoringAnonymousColumnBlocks(RenderObject* newChild,
RenderObject* beforeChild) | 769 void RenderBlock::addChildIgnoringAnonymousColumnBlocks(RenderObject* newChild,
RenderObject* beforeChild) |
770 { | 770 { |
771 // Make sure we don't append things after :after-generated content if we hav
e it. | 771 // Make sure we don't append things after :after-generated content if we hav
e it. |
772 if (!beforeChild) | 772 if (!beforeChild) |
773 beforeChild = afterPseudoElementRenderer(); | 773 beforeChild = afterPseudoElementRenderer(); |
774 | 774 |
775 // If the requested beforeChild is not one of our children, then this is bec
ause | |
776 // there is an anonymous container within this object that contains the befo
reChild. | |
777 if (beforeChild && beforeChild->parent() != this) { | 775 if (beforeChild && beforeChild->parent() != this) { |
778 RenderObject* beforeChildAnonymousContainer = anonymousContainer(beforeC
hild); | 776 RenderObject* beforeChildContainer = beforeChild->parent(); |
779 ASSERT(beforeChildAnonymousContainer); | 777 while (beforeChildContainer->parent() != this) |
780 ASSERT(beforeChildAnonymousContainer->isAnonymous()); | 778 beforeChildContainer = beforeChildContainer->parent(); |
| 779 ASSERT(beforeChildContainer); |
781 | 780 |
782 if (beforeChildAnonymousContainer->isAnonymousBlock()) { | 781 if (beforeChildContainer->isAnonymous()) { |
783 // Insert the child into the anonymous block box instead of here. | 782 // If the requested beforeChild is not one of our children, then thi
s is because |
784 if (newChild->isInline() || beforeChild->parent()->firstChild() != b
eforeChild) | 783 // there is an anonymous container within this object that contains
the beforeChild. |
785 beforeChild->parent()->addChild(newChild, beforeChild); | 784 RenderObject* beforeChildAnonymousContainer = beforeChildContainer; |
786 else | 785 if (beforeChildAnonymousContainer->isAnonymousBlock()) { |
787 addChild(newChild, beforeChild->parent()); | 786 // Insert the child into the anonymous block box instead of here
. |
788 return; | 787 if (newChild->isInline() || beforeChild->parent()->firstChild()
!= beforeChild) |
| 788 beforeChild->parent()->addChild(newChild, beforeChild); |
| 789 else |
| 790 addChild(newChild, beforeChild->parent()); |
| 791 return; |
| 792 } |
| 793 |
| 794 ASSERT(beforeChildAnonymousContainer->isTable()); |
| 795 if (newChild->isTablePart()) { |
| 796 // Insert into the anonymous table. |
| 797 beforeChildAnonymousContainer->addChild(newChild, beforeChild); |
| 798 return; |
| 799 } |
| 800 |
| 801 beforeChild = splitTablePartsAroundChild(beforeChild); |
| 802 |
| 803 ASSERT(beforeChild->parent() == this); |
| 804 if (beforeChild->parent() != this) { |
| 805 // We should never reach here. If we do, we need to use the |
| 806 // safe fallback to use the topmost beforeChild container. |
| 807 beforeChild = beforeChildContainer; |
| 808 } |
| 809 } else { |
| 810 // We will reach here when beforeChild is a run-in element. |
| 811 // If run-in element precedes a block-level element, it becomes the |
| 812 // the first inline child of that block level element. The insertion |
| 813 // point will be before that block-level element. |
| 814 ASSERT(beforeChild->isRunIn()); |
| 815 beforeChild = beforeChildContainer; |
789 } | 816 } |
790 | |
791 ASSERT(beforeChildAnonymousContainer->isTable()); | |
792 if ((newChild->isTableCol() && newChild->style()->display() == TABLE_COL
UMN_GROUP) | |
793 || (newChild->isTableCaption()) | |
794 || newChild->isTableSection() | |
795 || newChild->isTableRow() | |
796 || newChild->isTableCell()) { | |
797 // Insert into the anonymous table. | |
798 beforeChildAnonymousContainer->addChild(newChild, beforeChild); | |
799 return; | |
800 } | |
801 | |
802 beforeChild = splitTablePartsAroundChild(beforeChild); | |
803 } | 817 } |
804 | 818 |
805 // Check for a spanning element in columns. | 819 // Check for a spanning element in columns. |
806 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newChild)
; | 820 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newChild)
; |
807 if (columnsBlockAncestor) { | 821 if (columnsBlockAncestor) { |
808 // We are placing a column-span element inside a block. | 822 // We are placing a column-span element inside a block. |
809 RenderBlock* newBox = createAnonymousColumnSpanBlock(); | 823 RenderBlock* newBox = createAnonymousColumnSpanBlock(); |
810 | 824 |
811 if (columnsBlockAncestor != this) { | 825 if (columnsBlockAncestor != this) { |
812 // We are nested inside a multi-column element and are being split b
y the span. We have to break up | 826 // We are nested inside a multi-column element and are being split b
y the span. We have to break up |
(...skipping 6365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7178 } | 7192 } |
7179 | 7193 |
7180 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 7194 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
7181 { | 7195 { |
7182 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); | 7196 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); |
7183 } | 7197 } |
7184 | 7198 |
7185 #endif | 7199 #endif |
7186 | 7200 |
7187 } // namespace WebCore | 7201 } // namespace WebCore |
OLD | NEW |