Show
Ignore:
Timestamp:
04/25/07 12:10:24 (21 months ago)
Author:
hyatt
Message:

Rearchitect calcPrefWidths. The calculation is now done lazily only when minPrefWidth
or maxPrefWidth are asked for. The result of the calculation is cached.

The new invalidation scheme for pref width invalidation follows the
containing block hierarchy and knows to halt at positioned objects, since
they cannot influence the size of their containers.

Reviewed by darin

  • css/cssstyleselector.cpp: (WebCore::CSSStyleSelector::init): (WebCore::CSSStyleSelector::initForStyleResolve):
  • page/FrameView.cpp: (WebCore::FrameView::layout):
  • rendering/RenderApplet.cpp: (WebCore::RenderApplet::layout):
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::makeChildrenNonInline): (WebCore::RenderBlock::removeChild): (WebCore::RenderBlock::layout): (WebCore::RenderBlock::layoutBlock): (WebCore::RenderBlock::calcPrefWidths): (WebCore::InlineMinMaxIterator::endOfInline): (WebCore::shouldGrowTableCellForImage): (WebCore::RenderBlock::calcInlinePrefWidths): (WebCore::RenderBlock::calcBlockPrefWidths):
  • rendering/RenderBlock.h:
  • rendering/RenderBox.cpp: (WebCore::RenderBox::setStyle): (WebCore::RenderBox::minPrefWidth): (WebCore::RenderBox::maxPrefWidth): (WebCore::RenderBox::calcWidth): (WebCore::RenderBox::calcWidthUsing): (WebCore::RenderBox::calcAbsoluteHorizontal): (WebCore::RenderBox::calcAbsoluteHorizontalValues):
  • rendering/RenderBox.h:
  • rendering/RenderContainer.cpp: (WebCore::RenderContainer::removeChildNode): (WebCore::RenderContainer::appendChildNode): (WebCore::RenderContainer::insertChildNode): (WebCore::RenderContainer::layout):
  • rendering/RenderContainer.h: (WebCore::RenderContainer::moveChildNode):
  • rendering/RenderCounter.cpp: (WebCore::RenderCounter::dirtyLineBoxes): (WebCore::RenderCounter::calcPrefWidths):
  • rendering/RenderCounter.h:
  • rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::calcPrefWidths):
  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::calcHorizontalPrefWidths): (WebCore::RenderFlexibleBox::calcVerticalPrefWidths): (WebCore::RenderFlexibleBox::calcPrefWidths): (WebCore::RenderFlexibleBox::layoutBlock):
  • rendering/RenderForeignObject.cpp: (WebCore::RenderForeignObject::layout):
  • rendering/RenderFrameSet.cpp: (WebCore::RenderFrameSet::layout):
  • rendering/RenderHTMLCanvas.cpp: (WebCore::RenderHTMLCanvas::layout):
  • rendering/RenderImage.cpp: (WebCore::RenderImage::layout):
  • rendering/RenderInline.cpp:
  • rendering/RenderInline.h:
  • rendering/RenderListBox.cpp: (WebCore::RenderListBox::updateFromElement): (WebCore::RenderListBox::calcPrefWidths):
  • rendering/RenderListItem.cpp: (WebCore::firstNonMarkerChild): (WebCore::RenderListItem::updateMarkerLocation): (WebCore::RenderListItem::calcPrefWidths): (WebCore::RenderListItem::layout):
  • rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::layout): (WebCore::RenderListMarker::calcPrefWidths): (WebCore::RenderListMarker::updateMargins):
  • rendering/RenderListMarker.h:
  • rendering/RenderObject.cpp: (WebCore::RenderObject::RenderObject): (WebCore::RenderObject::removeChildNode): (WebCore::RenderObject::moveChildNode): (WebCore::RenderObject::appendChildNode): (WebCore::RenderObject::insertChildNode): (WebCore::RenderObject::setPrefWidthsDirty): (WebCore::RenderObject::invalidateContainingBlockPrefWidths): (WebCore::RenderObject::information): (WebCore::RenderObject::setStyle):
  • rendering/RenderObject.h: (WebCore::RenderObject::layer): (WebCore::RenderObject::hasLayer): (WebCore::RenderObject::prefWidthsDirty): (WebCore::RenderObject::setNeedsLayoutAndPrefWidthsRecalc): (WebCore::RenderObject::setHasLayer):
  • rendering/RenderPartObject.cpp: (WebCore::RenderPartObject::layout):
  • rendering/RenderSVGContainer.cpp: (WebCore::RenderSVGContainer::layout):
  • rendering/RenderSVGContainer.h:
  • rendering/RenderSVGHiddenContainer.cpp:
  • rendering/RenderSVGHiddenContainer.h:
  • rendering/RenderSVGText.cpp: (WebCore::RenderSVGText::layout):
  • rendering/RenderTable.cpp: (WebCore::RenderTable::calcWidth): (WebCore::RenderTable::layout): (WebCore::RenderTable::removeChildNode):
  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::layout):
  • rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::removeChildNode):
  • rendering/RenderTableSection.h:
  • rendering/RenderText.cpp: (WebCore::RenderText::trimmedPrefWidths): (WebCore::isSpaceAccordingToStyle): (WebCore::RenderText::minPrefWidth): (WebCore::RenderText::maxPrefWidth): (WebCore::RenderText::calcPrefWidths): (WebCore::RenderText::width):
  • rendering/RenderText.h:
  • rendering/RenderView.cpp: (WebCore::RenderView::RenderView): (WebCore::RenderView::calcPrefWidths): (WebCore::RenderView::layout):
  • rendering/RenderWidget.cpp: (WebCore::RenderWidget::layout):
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/rendering/RenderInline.h

    r21079 r21093  
    5959    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction); 
    6060 
    61     virtual void calcPrefWidths(); 
    62  
    6361    // overrides RenderObject 
    6462    virtual bool requiresLayer();