| 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 | 111 |
| 112 static TrackedContainerMap* gPositionedContainerMap = 0; | 112 static TrackedContainerMap* gPositionedContainerMap = 0; |
| 113 static TrackedContainerMap* gPercentHeightContainerMap = 0; | 113 static TrackedContainerMap* gPercentHeightContainerMap = 0; |
| 114 | 114 |
| 115 typedef WTF::HashMap<RenderBlock*, OwnPtr<ListHashSet<RenderInline*> > > Continu
ationOutlineTableMap; | 115 typedef WTF::HashMap<RenderBlock*, OwnPtr<ListHashSet<RenderInline*> > > Continu
ationOutlineTableMap; |
| 116 | 116 |
| 117 typedef WTF::HashSet<RenderBlock*> DelayedUpdateScrollInfoSet; | 117 typedef WTF::HashSet<RenderBlock*> DelayedUpdateScrollInfoSet; |
| 118 static int gDelayUpdateScrollInfo = 0; | 118 static int gDelayUpdateScrollInfo = 0; |
| 119 static DelayedUpdateScrollInfoSet* gDelayedUpdateScrollInfoSet = 0; | 119 static DelayedUpdateScrollInfoSet* gDelayedUpdateScrollInfoSet = 0; |
| 120 | 120 |
| 121 static bool gIsInColumnFlowSplit = false; | 121 static bool gColumnFlowSplitEnabled = true; |
| 122 | 122 |
| 123 bool RenderBlock::s_canPropagateFloatIntoSibling = false; | 123 bool RenderBlock::s_canPropagateFloatIntoSibling = false; |
| 124 | 124 |
| 125 // This class helps dispatching the 'overflow' event on layout change. overflow
can be set on RenderBoxes, yet the existing code | 125 // This class helps dispatching the 'overflow' event on layout change. overflow
can be set on RenderBoxes, yet the existing code |
| 126 // only works on RenderBlocks. If this change, this class should be shared with
other RenderBoxes. | 126 // only works on RenderBlocks. If this change, this class should be shared with
other RenderBoxes. |
| 127 class OverflowEventDispatcher { | 127 class OverflowEventDispatcher { |
| 128 WTF_MAKE_NONCOPYABLE(OverflowEventDispatcher); | 128 WTF_MAKE_NONCOPYABLE(OverflowEventDispatcher); |
| 129 public: | 129 public: |
| 130 OverflowEventDispatcher(const RenderBlock* block) | 130 OverflowEventDispatcher(const RenderBlock* block) |
| 131 : m_block(block) | 131 : m_block(block) |
| (...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 ASSERT(beforeChild->isRunIn()); | 825 ASSERT(beforeChild->isRunIn()); |
| 826 beforeChild = beforeChildContainer; | 826 beforeChild = beforeChildContainer; |
| 827 } | 827 } |
| 828 } | 828 } |
| 829 | 829 |
| 830 // Nothing goes before the intruded run-in. | 830 // Nothing goes before the intruded run-in. |
| 831 if (beforeChild && beforeChild->isRunIn() && runInIsPlacedIntoSiblingBlock(b
eforeChild)) | 831 if (beforeChild && beforeChild->isRunIn() && runInIsPlacedIntoSiblingBlock(b
eforeChild)) |
| 832 beforeChild = beforeChild->nextSibling(); | 832 beforeChild = beforeChild->nextSibling(); |
| 833 | 833 |
| 834 // Check for a spanning element in columns. | 834 // Check for a spanning element in columns. |
| 835 if (!gIsInColumnFlowSplit) { | 835 if (gColumnFlowSplitEnabled) { |
| 836 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newCh
ild); | 836 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newCh
ild); |
| 837 if (columnsBlockAncestor) { | 837 if (columnsBlockAncestor) { |
| 838 TemporaryChange<bool> isInColumnFlowSplit(gIsInColumnFlowSplit, true
); | 838 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled
, false); |
| 839 // We are placing a column-span element inside a block. | 839 // We are placing a column-span element inside a block. |
| 840 RenderBlock* newBox = createAnonymousColumnSpanBlock(); | 840 RenderBlock* newBox = createAnonymousColumnSpanBlock(); |
| 841 | 841 |
| 842 if (columnsBlockAncestor != this) { | 842 if (columnsBlockAncestor != this) { |
| 843 // We are nested inside a multi-column element and are being spl
it by the span. We have to break up | 843 // We are nested inside a multi-column element and are being spl
it by the span. We have to break up |
| 844 // our block into continuations. | 844 // our block into continuations. |
| 845 RenderBoxModelObject* oldContinuation = continuation(); | 845 RenderBoxModelObject* oldContinuation = continuation(); |
| 846 | 846 |
| 847 // When we split an anonymous block, there's no need to do any c
ontinuation hookup, | 847 // When we split an anonymous block, there's no need to do any c
ontinuation hookup, |
| 848 // since we haven't actually split a real element. | 848 // since we haven't actually split a real element. |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1136 | 1136 |
| 1137 void RenderBlock::removeChild(RenderObject* oldChild) | 1137 void RenderBlock::removeChild(RenderObject* oldChild) |
| 1138 { | 1138 { |
| 1139 // No need to waste time in merging or removing empty anonymous blocks. | 1139 // No need to waste time in merging or removing empty anonymous blocks. |
| 1140 // We can just bail out if our document is getting destroyed. | 1140 // We can just bail out if our document is getting destroyed. |
| 1141 if (documentBeingDestroyed()) { | 1141 if (documentBeingDestroyed()) { |
| 1142 RenderBox::removeChild(oldChild); | 1142 RenderBox::removeChild(oldChild); |
| 1143 return; | 1143 return; |
| 1144 } | 1144 } |
| 1145 | 1145 |
| 1146 // This protects against column split flows when anonymous blocks are gettin
g merged. |
| 1147 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled, false)
; |
| 1148 |
| 1146 // If this child is a block, and if our previous and next siblings are | 1149 // If this child is a block, and if our previous and next siblings are |
| 1147 // both anonymous blocks with inline content, then we can go ahead and | 1150 // both anonymous blocks with inline content, then we can go ahead and |
| 1148 // fold the inline content back together. | 1151 // fold the inline content back together. |
| 1149 RenderObject* prev = oldChild->previousSibling(); | 1152 RenderObject* prev = oldChild->previousSibling(); |
| 1150 RenderObject* next = oldChild->nextSibling(); | 1153 RenderObject* next = oldChild->nextSibling(); |
| 1151 bool canMergeAnonymousBlocks = canMergeContiguousAnonymousBlocks(oldChild, p
rev, next); | 1154 bool canMergeAnonymousBlocks = canMergeContiguousAnonymousBlocks(oldChild, p
rev, next); |
| 1152 if (canMergeAnonymousBlocks && prev && next) { | 1155 if (canMergeAnonymousBlocks && prev && next) { |
| 1153 prev->setNeedsLayoutAndPrefWidthsRecalc(); | 1156 prev->setNeedsLayoutAndPrefWidthsRecalc(); |
| 1154 RenderBlock* nextBlock = toRenderBlock(next); | 1157 RenderBlock* nextBlock = toRenderBlock(next); |
| 1155 RenderBlock* prevBlock = toRenderBlock(prev); | 1158 RenderBlock* prevBlock = toRenderBlock(prev); |
| (...skipping 6594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7750 { | 7753 { |
| 7751 memoryInstrumentation->addRootObject(gColumnInfoMap, WebCoreMemoryTypes::Ren
deringStructures); | 7754 memoryInstrumentation->addRootObject(gColumnInfoMap, WebCoreMemoryTypes::Ren
deringStructures); |
| 7752 memoryInstrumentation->addRootObject(gPositionedDescendantsMap, WebCoreMemor
yTypes::RenderingStructures); | 7755 memoryInstrumentation->addRootObject(gPositionedDescendantsMap, WebCoreMemor
yTypes::RenderingStructures); |
| 7753 memoryInstrumentation->addRootObject(gPercentHeightDescendantsMap, WebCoreMe
moryTypes::RenderingStructures); | 7756 memoryInstrumentation->addRootObject(gPercentHeightDescendantsMap, WebCoreMe
moryTypes::RenderingStructures); |
| 7754 memoryInstrumentation->addRootObject(gPositionedContainerMap, WebCoreMemoryT
ypes::RenderingStructures); | 7757 memoryInstrumentation->addRootObject(gPositionedContainerMap, WebCoreMemoryT
ypes::RenderingStructures); |
| 7755 memoryInstrumentation->addRootObject(gPercentHeightContainerMap, WebCoreMemo
ryTypes::RenderingStructures); | 7758 memoryInstrumentation->addRootObject(gPercentHeightContainerMap, WebCoreMemo
ryTypes::RenderingStructures); |
| 7756 memoryInstrumentation->addRootObject(gDelayedUpdateScrollInfoSet, WebCoreMem
oryTypes::RenderingStructures); | 7759 memoryInstrumentation->addRootObject(gDelayedUpdateScrollInfoSet, WebCoreMem
oryTypes::RenderingStructures); |
| 7757 } | 7760 } |
| 7758 | 7761 |
| 7759 } // namespace WebCore | 7762 } // namespace WebCore |
| OLD | NEW |