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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 | 378 |
379 // Take care of positioned objects. This is required as LayoutState keeps a
single clip rect. | 379 // Take care of positioned objects. This is required as LayoutState keeps a
single clip rect. |
380 if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects(
)) { | 380 if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects(
)) { |
381 TrackedRendererListHashSet::iterator end = positionedObjects->end(); | 381 TrackedRendererListHashSet::iterator end = positionedObjects->end(); |
382 LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : l
ocationOffset()); | 382 LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : l
ocationOffset()); |
383 for (TrackedRendererListHashSet::iterator it = positionedObjects->begin(
); it != end; ++it) { | 383 for (TrackedRendererListHashSet::iterator it = positionedObjects->begin(
); it != end; ++it) { |
384 RenderBox* box = *it; | 384 RenderBox* box = *it; |
385 | 385 |
386 // One of the renderers we're skipping over here may be the child's
repaint container, | 386 // One of the renderers we're skipping over here may be the child's
repaint container, |
387 // so we can't pass our own repaint container along. | 387 // so we can't pass our own repaint container along. |
388 const RenderLayerModelObject& repaintContainerForChild = *box->conta
inerForRepaint(); | 388 const RenderLayerModelObject& repaintContainerForChild = *box->conta
inerForPaintInvalidation(); |
389 | 389 |
390 // If the positioned renderer is absolutely positioned and it is ins
ide | 390 // If the positioned renderer is absolutely positioned and it is ins
ide |
391 // a relatively positioend inline element, we need to account for | 391 // a relatively positioend inline element, we need to account for |
392 // the inline elements position in LayoutState. | 392 // the inline elements position in LayoutState. |
393 if (box->style()->position() == AbsolutePosition) { | 393 if (box->style()->position() == AbsolutePosition) { |
394 RenderObject* container = box->container(&repaintContainerForChi
ld, 0); | 394 RenderObject* container = box->container(&repaintContainerForChi
ld, 0); |
395 if (container->isInFlowPositioned() && container->isRenderInline
()) { | 395 if (container->isInFlowPositioned() && container->isRenderInline
()) { |
396 // FIXME: We should be able to use layout-state for this. | 396 // FIXME: We should be able to use layout-state for this. |
397 // Currently, we will place absolutly positioned elements in
side | 397 // Currently, we will place absolutly positioned elements in
side |
398 // relatively positioned inline blocks in the wrong location
. crbug.com/371485 | 398 // relatively positioned inline blocks in the wrong location
. crbug.com/371485 |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 | 700 |
701 // We already know the newBlockBox isn't going to contain inline kids, so av
oid wasting | 701 // We already know the newBlockBox isn't going to contain inline kids, so av
oid wasting |
702 // time in makeChildrenNonInline by just setting this explicitly up front. | 702 // time in makeChildrenNonInline by just setting this explicitly up front. |
703 newBlockBox->setChildrenInline(false); | 703 newBlockBox->setChildrenInline(false); |
704 | 704 |
705 newBlockBox->addChild(newChild); | 705 newBlockBox->addChild(newChild); |
706 | 706 |
707 // Always just do a full layout in order to ensure that line boxes (especial
ly wrappers for images) | 707 // Always just do a full layout in order to ensure that line boxes (especial
ly wrappers for images) |
708 // get deleted properly. Because objects moves from the pre block into the
post block, we want to | 708 // get deleted properly. Because objects moves from the pre block into the
post block, we want to |
709 // make new line boxes instead of leaving the old line boxes around. | 709 // make new line boxes instead of leaving the old line boxes around. |
710 pre->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 710 pre->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
711 block->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 711 block->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
712 post->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 712 post->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
713 } | 713 } |
714 | 714 |
715 void RenderBlock::makeChildrenAnonymousColumnBlocks(RenderObject* beforeChild, R
enderBlockFlow* newBlockBox, RenderObject* newChild) | 715 void RenderBlock::makeChildrenAnonymousColumnBlocks(RenderObject* beforeChild, R
enderBlockFlow* newBlockBox, RenderObject* newChild) |
716 { | 716 { |
717 RenderBlockFlow* pre = 0; | 717 RenderBlockFlow* pre = 0; |
718 RenderBlockFlow* post = 0; | 718 RenderBlockFlow* post = 0; |
719 RenderBlock* block = this; // Eventually block will not just be |this|, but
will also be a block nested inside |this|. Assign to a variable | 719 RenderBlock* block = this; // Eventually block will not just be |this|, but
will also be a block nested inside |this|. Assign to a variable |
720 // so that we don't have to patch all of the rest
of the code later on. | 720 // so that we don't have to patch all of the rest
of the code later on. |
721 | 721 |
722 // Delete the block's line boxes before we do the split. | 722 // Delete the block's line boxes before we do the split. |
(...skipping 27 matching lines...) Expand all Loading... |
750 // We already know the newBlockBox isn't going to contain inline kids, so av
oid wasting | 750 // We already know the newBlockBox isn't going to contain inline kids, so av
oid wasting |
751 // time in makeChildrenNonInline by just setting this explicitly up front. | 751 // time in makeChildrenNonInline by just setting this explicitly up front. |
752 newBlockBox->setChildrenInline(false); | 752 newBlockBox->setChildrenInline(false); |
753 | 753 |
754 newBlockBox->addChild(newChild); | 754 newBlockBox->addChild(newChild); |
755 | 755 |
756 // Always just do a full layout in order to ensure that line boxes (especial
ly wrappers for images) | 756 // Always just do a full layout in order to ensure that line boxes (especial
ly wrappers for images) |
757 // get deleted properly. Because objects moved from the pre block into the
post block, we want to | 757 // get deleted properly. Because objects moved from the pre block into the
post block, we want to |
758 // make new line boxes instead of leaving the old line boxes around. | 758 // make new line boxes instead of leaving the old line boxes around. |
759 if (pre) | 759 if (pre) |
760 pre->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 760 pre->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
761 block->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 761 block->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
762 if (post) | 762 if (post) |
763 post->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 763 post->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
764 } | 764 } |
765 | 765 |
766 RenderBlockFlow* RenderBlock::columnsBlockForSpanningElement(RenderObject* newCh
ild) | 766 RenderBlockFlow* RenderBlock::columnsBlockForSpanningElement(RenderObject* newCh
ild) |
767 { | 767 { |
768 // FIXME: This function is the gateway for the addition of column-span suppo
rt. It will | 768 // FIXME: This function is the gateway for the addition of column-span suppo
rt. It will |
769 // be added to in three stages: | 769 // be added to in three stages: |
770 // (1) Immediate children of a multi-column block can span. | 770 // (1) Immediate children of a multi-column block can span. |
771 // (2) Nested block-level children with only block-level ancestors between t
hem and the multi-column block can span. | 771 // (2) Nested block-level children with only block-level ancestors between t
hem and the multi-column block can span. |
772 // (3) Nested children with block or inline ancestors between them and the m
ulti-column block can span (this is when we | 772 // (3) Nested children with block or inline ancestors between them and the m
ulti-column block can span (this is when we |
773 // cross the streams and have to cope with both types of continuations mixed
together). | 773 // cross the streams and have to cope with both types of continuations mixed
together). |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1109 collapseAnonymousBlockChild(this, toRenderBlock(blocksToRemove[i])); | 1109 collapseAnonymousBlockChild(this, toRenderBlock(blocksToRemove[i])); |
1110 } | 1110 } |
1111 | 1111 |
1112 void RenderBlock::collapseAnonymousBlockChild(RenderBlock* parent, RenderBlock*
child) | 1112 void RenderBlock::collapseAnonymousBlockChild(RenderBlock* parent, RenderBlock*
child) |
1113 { | 1113 { |
1114 // It's possible that this block's destruction may have been triggered by th
e | 1114 // It's possible that this block's destruction may have been triggered by th
e |
1115 // child's removal. Just bail if the anonymous child block is already being | 1115 // child's removal. Just bail if the anonymous child block is already being |
1116 // destroyed. See crbug.com/282088 | 1116 // destroyed. See crbug.com/282088 |
1117 if (child->beingDestroyed()) | 1117 if (child->beingDestroyed()) |
1118 return; | 1118 return; |
1119 parent->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 1119 parent->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
1120 parent->setChildrenInline(child->childrenInline()); | 1120 parent->setChildrenInline(child->childrenInline()); |
1121 RenderObject* nextSibling = child->nextSibling(); | 1121 RenderObject* nextSibling = child->nextSibling(); |
1122 | 1122 |
1123 RenderFlowThread* childFlowThread = child->flowThreadContainingBlock(); | 1123 RenderFlowThread* childFlowThread = child->flowThreadContainingBlock(); |
1124 CurrentRenderFlowThreadMaintainer flowThreadMaintainer(childFlowThread); | 1124 CurrentRenderFlowThreadMaintainer flowThreadMaintainer(childFlowThread); |
1125 | 1125 |
1126 parent->children()->removeChildNode(parent, child, child->hasLayer()); | 1126 parent->children()->removeChildNode(parent, child, child->hasLayer()); |
1127 child->moveAllChildrenTo(parent, nextSibling, child->hasLayer()); | 1127 child->moveAllChildrenTo(parent, nextSibling, child->hasLayer()); |
1128 // Explicitly delete the child's line box tree, or the special anonymous | 1128 // Explicitly delete the child's line box tree, or the special anonymous |
1129 // block handling in willBeDestroyed will cause problems. | 1129 // block handling in willBeDestroyed will cause problems. |
(...skipping 13 matching lines...) Expand all Loading... |
1143 // This protects against column split flows when anonymous blocks are gettin
g merged. | 1143 // This protects against column split flows when anonymous blocks are gettin
g merged. |
1144 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled, false)
; | 1144 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled, false)
; |
1145 | 1145 |
1146 // If this child is a block, and if our previous and next siblings are | 1146 // 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 | 1147 // both anonymous blocks with inline content, then we can go ahead and |
1148 // fold the inline content back together. | 1148 // fold the inline content back together. |
1149 RenderObject* prev = oldChild->previousSibling(); | 1149 RenderObject* prev = oldChild->previousSibling(); |
1150 RenderObject* next = oldChild->nextSibling(); | 1150 RenderObject* next = oldChild->nextSibling(); |
1151 bool canMergeAnonymousBlocks = canMergeContiguousAnonymousBlocks(oldChild, p
rev, next); | 1151 bool canMergeAnonymousBlocks = canMergeContiguousAnonymousBlocks(oldChild, p
rev, next); |
1152 if (canMergeAnonymousBlocks && prev && next) { | 1152 if (canMergeAnonymousBlocks && prev && next) { |
1153 prev->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 1153 prev->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
1154 RenderBlockFlow* nextBlock = toRenderBlockFlow(next); | 1154 RenderBlockFlow* nextBlock = toRenderBlockFlow(next); |
1155 RenderBlockFlow* prevBlock = toRenderBlockFlow(prev); | 1155 RenderBlockFlow* prevBlock = toRenderBlockFlow(prev); |
1156 | 1156 |
1157 if (prev->childrenInline() != next->childrenInline()) { | 1157 if (prev->childrenInline() != next->childrenInline()) { |
1158 RenderBlock* inlineChildrenBlock = prev->childrenInline() ? prevBloc
k : nextBlock; | 1158 RenderBlock* inlineChildrenBlock = prev->childrenInline() ? prevBloc
k : nextBlock; |
1159 RenderBlock* blockChildrenBlock = prev->childrenInline() ? nextBlock
: prevBlock; | 1159 RenderBlock* blockChildrenBlock = prev->childrenInline() ? nextBlock
: prevBlock; |
1160 | 1160 |
1161 // Place the inline children block inside of the block children bloc
k instead of deleting it. | 1161 // Place the inline children block inside of the block children bloc
k instead of deleting it. |
1162 // In order to reuse it, we have to reset it to just be a generic an
onymous block. Make sure | 1162 // In order to reuse it, we have to reset it to just be a generic an
onymous block. Make sure |
1163 // to clear out inherited column properties by just making a new sty
le, and to also clear the | 1163 // to clear out inherited column properties by just making a new sty
le, and to also clear the |
1164 // column span flag if it is set. | 1164 // column span flag if it is set. |
1165 ASSERT(!inlineChildrenBlock->continuation()); | 1165 ASSERT(!inlineChildrenBlock->continuation()); |
1166 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWith
Display(style(), BLOCK); | 1166 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWith
Display(style(), BLOCK); |
1167 // Cache this value as it might get changed in setStyle() call. | 1167 // Cache this value as it might get changed in setStyle() call. |
1168 bool inlineChildrenBlockHasLayer = inlineChildrenBlock->hasLayer(); | 1168 bool inlineChildrenBlockHasLayer = inlineChildrenBlock->hasLayer(); |
1169 inlineChildrenBlock->setStyle(newStyle); | 1169 inlineChildrenBlock->setStyle(newStyle); |
1170 children()->removeChildNode(this, inlineChildrenBlock, inlineChildre
nBlockHasLayer); | 1170 children()->removeChildNode(this, inlineChildrenBlock, inlineChildre
nBlockHasLayer); |
1171 | 1171 |
1172 // Now just put the inlineChildrenBlock inside the blockChildrenBloc
k. | 1172 // Now just put the inlineChildrenBlock inside the blockChildrenBloc
k. |
1173 blockChildrenBlock->children()->insertChildNode(blockChildrenBlock,
inlineChildrenBlock, prev == inlineChildrenBlock ? blockChildrenBlock->firstChil
d() : 0, | 1173 blockChildrenBlock->children()->insertChildNode(blockChildrenBlock,
inlineChildrenBlock, prev == inlineChildrenBlock ? blockChildrenBlock->firstChil
d() : 0, |
1174 inlineChildrenBlockH
asLayer || blockChildrenBlock->hasLayer()); | 1174 inlineChildrenBlockH
asLayer || blockChildrenBlock->hasLayer()); |
1175 next->setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint(); | 1175 next->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(); |
1176 | 1176 |
1177 // inlineChildrenBlock got reparented to blockChildrenBlock, so it i
s no longer a child | 1177 // inlineChildrenBlock got reparented to blockChildrenBlock, so it i
s no longer a child |
1178 // of "this". we null out prev or next so that is not used later in
the function. | 1178 // of "this". we null out prev or next so that is not used later in
the function. |
1179 if (inlineChildrenBlock == prevBlock) | 1179 if (inlineChildrenBlock == prevBlock) |
1180 prev = 0; | 1180 prev = 0; |
1181 else | 1181 else |
1182 next = 0; | 1182 next = 0; |
1183 } else { | 1183 } else { |
1184 // Take all the children out of the |next| block and put them in | 1184 // Take all the children out of the |next| block and put them in |
1185 // the |prev| block. | 1185 // the |prev| block. |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1710 if (isHorizontalWritingMode() == r->isHorizontalWritingMode()) | 1710 if (isHorizontalWritingMode() == r->isHorizontalWritingMode()) |
1711 r->updateLogicalHeight(); | 1711 r->updateLogicalHeight(); |
1712 else | 1712 else |
1713 r->updateLogicalWidth(); | 1713 r->updateLogicalWidth(); |
1714 oldLogicalTop = logicalTopForChild(r); | 1714 oldLogicalTop = logicalTopForChild(r); |
1715 } | 1715 } |
1716 | 1716 |
1717 // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout(
) here instead of a full layout. Need | 1717 // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout(
) here instead of a full layout. Need |
1718 // to investigate why it does not trigger the correct invalidations in t
hat case. crbug.com/350756 | 1718 // to investigate why it does not trigger the correct invalidations in t
hat case. crbug.com/350756 |
1719 if (info == ForcedLayoutAfterContainingBlockMoved) | 1719 if (info == ForcedLayoutAfterContainingBlockMoved) |
1720 r->setNeedsLayoutAndFullRepaint(); | 1720 r->setNeedsLayoutAndFullPaintInvalidation(); |
1721 | 1721 |
1722 r->layoutIfNeeded(); | 1722 r->layoutIfNeeded(); |
1723 | 1723 |
1724 // Lay out again if our estimate was wrong. | 1724 // Lay out again if our estimate was wrong. |
1725 if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r)
!= oldLogicalTop) | 1725 if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r)
!= oldLogicalTop) |
1726 r->forceChildLayout(); | 1726 r->forceChildLayout(); |
1727 } | 1727 } |
1728 | 1728 |
1729 if (hasColumns()) | 1729 if (hasColumns()) |
1730 view()->layoutState()->setColumnInfo(columnInfo()); // FIXME: Kind of gr
oss. We just put this back into the layout state so that pop() will work. | 1730 view()->layoutState()->setColumnInfo(columnInfo()); // FIXME: Kind of gr
oss. We just put this back into the layout state so that pop() will work. |
(...skipping 2732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4463 // https://bugs.webkit.org/show_bug.cgi?id=46781 | 4463 // https://bugs.webkit.org/show_bug.cgi?id=46781 |
4464 FloatRect localRect(0, -collapsedMarginBefore().toFloat(), | 4464 FloatRect localRect(0, -collapsedMarginBefore().toFloat(), |
4465 width().toFloat(), (height() + collapsedMarginBefore() + collapsedMa
rginAfter()).toFloat()); | 4465 width().toFloat(), (height() + collapsedMarginBefore() + collapsedMa
rginAfter()).toFloat()); |
4466 quads.append(localToAbsoluteQuad(localRect, 0 /* mode */, wasFixed)); | 4466 quads.append(localToAbsoluteQuad(localRect, 0 /* mode */, wasFixed)); |
4467 continuation()->absoluteQuads(quads, wasFixed); | 4467 continuation()->absoluteQuads(quads, wasFixed); |
4468 } else { | 4468 } else { |
4469 quads.append(RenderBox::localToAbsoluteQuad(FloatRect(0, 0, width().toFl
oat(), height().toFloat()), 0 /* mode */, wasFixed)); | 4469 quads.append(RenderBox::localToAbsoluteQuad(FloatRect(0, 0, width().toFl
oat(), height().toFloat()), 0 /* mode */, wasFixed)); |
4470 } | 4470 } |
4471 } | 4471 } |
4472 | 4472 |
4473 LayoutRect RenderBlock::rectWithOutlineForRepaint(const RenderLayerModelObject*
repaintContainer, LayoutUnit outlineWidth) const | 4473 LayoutRect RenderBlock::rectWithOutlineForPaintInvalidation(const RenderLayerMod
elObject* paintInvalidationContainer, LayoutUnit outlineWidth) const |
4474 { | 4474 { |
4475 LayoutRect r(RenderBox::rectWithOutlineForRepaint(repaintContainer, outlineW
idth)); | 4475 LayoutRect r(RenderBox::rectWithOutlineForPaintInvalidation(paintInvalidatio
nContainer, outlineWidth)); |
4476 if (isAnonymousBlockContinuation()) | 4476 if (isAnonymousBlockContinuation()) |
4477 r.inflateY(collapsedMarginBefore()); // FIXME: This is wrong for block-f
lows that are horizontal. | 4477 r.inflateY(collapsedMarginBefore()); // FIXME: This is wrong for block-f
lows that are horizontal. |
4478 return r; | 4478 return r; |
4479 } | 4479 } |
4480 | 4480 |
4481 RenderObject* RenderBlock::hoverAncestor() const | 4481 RenderObject* RenderBlock::hoverAncestor() const |
4482 { | 4482 { |
4483 return isAnonymousBlockContinuation() ? continuation() : RenderBox::hoverAnc
estor(); | 4483 return isAnonymousBlockContinuation() ? continuation() : RenderBox::hoverAnc
estor(); |
4484 } | 4484 } |
4485 | 4485 |
4486 void RenderBlock::updateDragState(bool dragOn) | 4486 void RenderBlock::updateDragState(bool dragOn) |
4487 { | 4487 { |
4488 RenderBox::updateDragState(dragOn); | 4488 RenderBox::updateDragState(dragOn); |
4489 if (continuation()) | 4489 if (continuation()) |
4490 continuation()->updateDragState(dragOn); | 4490 continuation()->updateDragState(dragOn); |
4491 } | 4491 } |
4492 | 4492 |
4493 RenderStyle* RenderBlock::outlineStyleForRepaint() const | 4493 RenderStyle* RenderBlock::outlineStyleForPaintInvalidation() const |
4494 { | 4494 { |
4495 return isAnonymousBlockContinuation() ? continuation()->style() : style(); | 4495 return isAnonymousBlockContinuation() ? continuation()->style() : style(); |
4496 } | 4496 } |
4497 | 4497 |
4498 void RenderBlock::childBecameNonInline(RenderObject*) | 4498 void RenderBlock::childBecameNonInline(RenderObject*) |
4499 { | 4499 { |
4500 makeChildrenNonInline(); | 4500 makeChildrenNonInline(); |
4501 if (isAnonymousBlock() && parent() && parent()->isRenderBlock()) | 4501 if (isAnonymousBlock() && parent() && parent()->isRenderBlock()) |
4502 toRenderBlock(parent())->removeLeftoverAnonymousBlock(this); | 4502 toRenderBlock(parent())->removeLeftoverAnonymousBlock(this); |
4503 // |this| may be dead here | 4503 // |this| may be dead here |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5047 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const | 5047 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const |
5048 { | 5048 { |
5049 showRenderObject(); | 5049 showRenderObject(); |
5050 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) | 5050 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) |
5051 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); | 5051 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); |
5052 } | 5052 } |
5053 | 5053 |
5054 #endif | 5054 #endif |
5055 | 5055 |
5056 } // namespace WebCore | 5056 } // namespace WebCore |
OLD | NEW |