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 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights 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 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 } | 675 } |
676 } | 676 } |
677 } | 677 } |
678 } | 678 } |
679 return columnsBlockAncestor; | 679 return columnsBlockAncestor; |
680 } | 680 } |
681 | 681 |
682 void RenderBlock::addChildIgnoringAnonymousColumnBlocks(RenderObject* newChild,
RenderObject* beforeChild) | 682 void RenderBlock::addChildIgnoringAnonymousColumnBlocks(RenderObject* newChild,
RenderObject* beforeChild) |
683 { | 683 { |
684 // Make sure we don't append things after :after-generated content if we hav
e it. | 684 // Make sure we don't append things after :after-generated content if we hav
e it. |
685 if (!beforeChild) { | 685 if (!beforeChild) |
686 RenderObject* lastRenderer = lastChild(); | 686 beforeChild = findAfterContentRenderer(); |
687 while (lastRenderer && lastRenderer->isAnonymous() && !isAfterContent(la
stRenderer)) | |
688 lastRenderer = lastRenderer->lastChild(); | |
689 if (lastRenderer && isAfterContent(lastRenderer)) | |
690 beforeChild = lastRenderer; | |
691 } | |
692 | 687 |
693 // If the requested beforeChild is not one of our children, then this is bec
ause | 688 // If the requested beforeChild is not one of our children, then this is bec
ause |
694 // there is an anonymous container within this object that contains the befo
reChild. | 689 // there is an anonymous container within this object that contains the befo
reChild. |
695 if (beforeChild && beforeChild->parent() != this) { | 690 if (beforeChild && beforeChild->parent() != this) { |
696 RenderObject* anonymousChild = beforeChild->parent(); | 691 RenderObject* beforeChildAnonymousContainer = anonymousContainer(beforeC
hild); |
697 ASSERT(anonymousChild); | 692 ASSERT(beforeChildAnonymousContainer); |
| 693 ASSERT(beforeChildAnonymousContainer->isAnonymous()); |
698 | 694 |
699 while (anonymousChild->parent() != this) | 695 if (beforeChildAnonymousContainer->isAnonymousBlock()) { |
700 anonymousChild = anonymousChild->parent(); | |
701 | |
702 ASSERT(anonymousChild->isAnonymous()); | |
703 | |
704 if (anonymousChild->isAnonymousBlock()) { | |
705 // Insert the child into the anonymous block box instead of here. | 696 // Insert the child into the anonymous block box instead of here. |
706 if (newChild->isInline() || beforeChild->parent()->firstChild() != b
eforeChild) | 697 if (newChild->isInline() || beforeChild->parent()->firstChild() != b
eforeChild) |
707 beforeChild->parent()->addChild(newChild, beforeChild); | 698 beforeChild->parent()->addChild(newChild, beforeChild); |
708 else | 699 else |
709 addChild(newChild, beforeChild->parent()); | 700 addChild(newChild, beforeChild->parent()); |
710 return; | 701 return; |
711 } | 702 } |
712 | 703 |
713 ASSERT(anonymousChild->isTable()); | 704 ASSERT(beforeChildAnonymousContainer->isTable()); |
714 if ((newChild->isTableCol() && newChild->style()->display() == TABLE_COL
UMN_GROUP) | 705 if ((newChild->isTableCol() && newChild->style()->display() == TABLE_COL
UMN_GROUP) |
715 || (newChild->isRenderBlock() && newChild->style()->display() ==
TABLE_CAPTION) | 706 || (newChild->isRenderBlock() && newChild->style()->display() ==
TABLE_CAPTION) |
716 || newChild->isTableSection() | 707 || newChild->isTableSection() |
717 || newChild->isTableRow() | 708 || newChild->isTableRow() |
718 || newChild->isTableCell()) { | 709 || newChild->isTableCell()) { |
719 // Insert into the anonymous table. | 710 // Insert into the anonymous table. |
720 anonymousChild->addChild(newChild, beforeChild); | 711 beforeChildAnonymousContainer->addChild(newChild, beforeChild); |
721 return; | 712 return; |
722 } | 713 } |
723 | 714 |
724 // Go on to insert before the anonymous table. | 715 // Go on to insert before the anonymous table. |
725 beforeChild = anonymousChild; | 716 beforeChild = beforeChildAnonymousContainer; |
726 } | 717 } |
727 | 718 |
728 // Check for a spanning element in columns. | 719 // Check for a spanning element in columns. |
729 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newChild)
; | 720 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newChild)
; |
730 if (columnsBlockAncestor) { | 721 if (columnsBlockAncestor) { |
731 // We are placing a column-span element inside a block. | 722 // We are placing a column-span element inside a block. |
732 RenderBlock* newBox = createAnonymousColumnSpanBlock(); | 723 RenderBlock* newBox = createAnonymousColumnSpanBlock(); |
733 | 724 |
734 if (columnsBlockAncestor != this) { | 725 if (columnsBlockAncestor != this) { |
735 // We are nested inside a multi-column element and are being split b
y the span. We have to break up | 726 // We are nested inside a multi-column element and are being split b
y the span. We have to break up |
(...skipping 5890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6626 } | 6617 } |
6627 | 6618 |
6628 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 6619 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
6629 { | 6620 { |
6630 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); | 6621 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x(
), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); |
6631 } | 6622 } |
6632 | 6623 |
6633 #endif | 6624 #endif |
6634 | 6625 |
6635 } // namespace WebCore | 6626 } // namespace WebCore |
OLD | NEW |