Show
Ignore:
Timestamp:
02/12/07 15:52:11 (2 years ago)
Author:
bdash
Message:

2007-02-12 Mitz Pettel <mitz@webkit.org>

Reviewed by Dave Hyatt.

Tests: fast/repaint/float-overflow.html

fast/repaint/float-overflow-right.html

Reflected in existing test results.

Unified floats and overflow for the purposes of painting and hit-testing.
Overhanging and overflowing floats are now factored into a block's overflow
unless their painting has been propagated to an ancestor.

Changed table cells to no longer expand to enclose overflow, thus making
it purely "visual overflow", having no effect on layout in WebCore. It
still determines scrolling dimensions.

  • rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::placeBoxesHorizontally): Include inline blocks' horizontal overflow in the inline box's dimensions.
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::layoutBlock): Removed the expand to enclose overflows behavior. Added code to add this block's floats (and their overflow) to its overflow rect if it is not in a block formatting context. Otherwise, the inclusion of floats in the overflow is deferred until this block's parent examines its floats and possibly adopts overhanging floats. (WebCore::RenderBlock::layoutBlockChildren): (WebCore::RenderBlock::paint): (WebCore::RenderBlock::floatRect): Changed to return an empty rect if there are no floats or the floats are clipped, instead of returning the border box. (WebCore::RenderBlock::addOverhangingFloats): Any floats of the child that are not to be painted by the parent are added to the child's overflow rect. (WebCore::RenderBlock::addVisualOverflow): Added. Adjusts the overflow bounds to include the given rect. (WebCore::RenderBlock::nodeAtPoint):
  • rendering/RenderBlock.h:
  • rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::layoutBlock): (WebCore::RenderFlexibleBox::layoutHorizontalBox): After placing a normal child, add its floats to its overflow, since painting of floats does not propagate to flexible boxes. (WebCore::RenderFlexibleBox::layoutVerticalBox): Ditto.
  • rendering/RenderForeignObject.cpp: (WebCore::RenderForeignObject::layout):
  • rendering/RenderHTMLCanvas.cpp: (WebCore::RenderHTMLCanvas::layout):
  • rendering/RenderImage.cpp: (WebCore::RenderImage::layout):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateLayerPositions): (WebCore::RenderLayer::absoluteBoundingBox):
  • rendering/RenderLayer.h:
  • rendering/RenderObject.cpp: (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
  • rendering/RenderObject.h: (WebCore::RenderObject::expandsToEncloseOverhangingFloats):
  • rendering/RenderPath.cpp: (WebCore::RenderPath::layout):
  • rendering/RenderSVGContainer.cpp: (WebCore::RenderSVGContainer::layout):
  • rendering/RenderSVGText.cpp: (WebCore::RenderSVGText::layout):
  • rendering/RenderTable.cpp: (WebCore::RenderTable::layout):
  • rendering/RenderTableCell.h: (WebCore::RenderTableCell::expandsToEncloseOverhangingFloats):

2007-02-12 Mitz Pettel <mitz@webkit.org>

Reviewed by Dave Hyatt.

  • css1/formatting_model/inline_elements-expected.checksum:
  • css1/formatting_model/inline_elements-expected.png:
  • css1/formatting_model/inline_elements-expected.txt:
  • css2.1/t0905-c414-flt-00-d-expected.txt:
  • css2.1/t0905-c414-flt-01-d-g-expected.txt:
  • css2.1/t0905-c414-flt-02-c-expected.txt:
  • css2.1/t0905-c414-flt-03-c-expected.txt:
  • css2.1/t0905-c414-flt-04-c-expected.txt:
  • css2.1/t0905-c414-flt-wrap-01-d-g-expected.txt:
  • css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
  • css2.1/t0905-c5525-fltwidth-02-c-g-expected.txt:
  • css2.1/t0905-c5525-fltwidth-03-c-g-expected.txt:
  • css2.1/t090501-c414-flt-02-d-g-expected.txt:
  • css2.1/t090501-c414-flt-03-b-g-expected.txt:
  • fast/backgrounds/repeat/negative-offset-repeat-expected.txt:
  • fast/block/float/008-expected.txt:
  • fast/block/float/013-expected.checksum:
  • fast/block/float/013-expected.txt:
  • fast/block/float/029-expected.txt:
  • fast/block/float/031-expected.txt:
  • fast/block/float/float-in-float-painting-expected.txt:
  • fast/block/margin-collapse/059-expected.checksum:
  • fast/block/margin-collapse/059-expected.png:
  • fast/block/margin-collapse/059-expected.txt:
  • fast/block/margin-collapse/062-expected.txt:
  • fast/block/margin-collapse/063-expected.txt:
  • fast/box-shadow/basic-shadows-expected.txt:
  • fast/forms/floating-textfield-relayout-expected.checksum:
  • fast/forms/floating-textfield-relayout-expected.txt:
  • fast/lists/003-expected.txt:
  • fast/media/mq-relative-constraints-08-expected.txt:
  • fast/multicol/float-multicol-expected.txt:
  • fast/repaint/float-overflow-expected.checksum: Added.
  • fast/repaint/float-overflow-expected.png: Added.
  • fast/repaint/float-overflow-expected.txt: Added.
  • fast/repaint/float-overflow-right-expected.checksum: Added.
  • fast/repaint/float-overflow-right-expected.png: Added.
  • fast/repaint/float-overflow-right-expected.txt: Added.
  • fast/repaint/float-overflow-right.html: Added.
  • fast/repaint/float-overflow.html: Added.
  • fast/table/009-expected.checksum:
  • fast/table/009-expected.png:
  • fast/table/009-expected.txt:
  • fast/text/text-shadow-extreme-value.html:
  • fast/text/whitespace/012-expected.txt:
  • tables/mozilla/bugs/bug120364-expected.txt:
  • tables/mozilla/bugs/bug196870-expected.checksum:
  • tables/mozilla/bugs/bug196870-expected.png:
  • tables/mozilla/bugs/bug196870-expected.txt:
  • tables/mozilla/bugs/bug45055-2-expected.txt:
  • tables/mozilla/bugs/bug72359-expected.txt:
  • tables/mozilla/marvin/x_table_align_left-expected.txt:
  • tables/mozilla/marvin/x_table_align_right-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.txt:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.checksum:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png:
  • tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.txt:
Files:
1 modified

Legend:

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

    r19414 r19588  
    7070    virtual void setOverflowWidth(int w) { m_overflowWidth = w; } 
    7171 
     72    void addVisualOverflow(const IntRect&); 
     73 
    7274    virtual bool isSelfCollapsingBlock() const; 
    7375    virtual bool isTopMarginQuirk() const { return m_topMarginQuirk; } 
     
    102104    virtual void repaintObjectsBeforeLayout(); 
    103105    virtual void repaintOverhangingFloats(bool paintAllDescendants); 
    104     virtual void getAbsoluteRepaintRectIncludingFloats(IntRect& bounds, IntRect& fullBounds); 
    105106 
    106107    virtual void setStyle(RenderStyle*); 
     
    179180    inline int leftBottom(); 
    180181    inline int rightBottom(); 
    181     virtual IntRect floatRect() const; 
    182182 
    183183    virtual int lineWidth(int y) const; 
     
    290290 
    291291protected: 
     292    IntRect floatRect() const; 
    292293    void newLine(); 
    293294    virtual bool hasLineIfEmpty() const; 
     
    449450    int m_maxBottomNegMargin; 
    450451 
    451     // How much content overflows out of our block vertically or horizontally (all we support 
    452     // for now is spillage out of the bottom and the right, which are the common cases). 
    453     // FIXME: Generalize to work with top and left as well. 
     452    // How much content overflows out of our block vertically or horizontally. 
    454453    int m_overflowHeight; 
    455454    int m_overflowWidth; 
    456  
    457     // Left and top overflow.  Does not affect scrolling dimensions, but we do at least use it 
    458     // when dirty rect checking and hit testing. 
    459455    int m_overflowLeft; 
    460456    int m_overflowTop;