2007-02-18 Mitz Pettel <mitz@webkit.org>
authorap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Feb 2007 16:15:07 +0000 (16:15 +0000)
committerap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Feb 2007 16:15:07 +0000 (16:15 +0000)
        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=12123
          REGRESSION: Incomplete repaint of floats' overflows

        Tests: fast/repaint/float-overflow.html
               fast/repaint/float-overflow-right.html
               fast/repaint/table-cell-vertical-overflow.html

        - fix http://bugs.webkit.org/show_bug.cgi?id=10116
          REGRESSION: Menu item drawn 2 pixels short on WWDC 2006 Attendee Site

        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): Made non-virtual and 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.h: Removed the override of overflowHeight() since now tables can have
        vertical overflow.
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::paint): Made sure that overflow is repainted.
        * rendering/RenderTableCell.h:
        (WebCore::RenderTableCell::expandsToEncloseOverhangingFloats): Removed.
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::RenderTableSection):
        (WebCore::RenderTableSection::layoutRows): Factor in vertical overflow from cells.
        (WebCore::RenderTableSection::paint):
        * rendering/RenderTableSection.h:
        (WebCore::RenderTableSection::overflowHeight):
        (WebCore::RenderTableSection::overflowTop):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@19696 268f45cc-cd09-0410-ab3c-d52691b4dbfc

140 files changed:
LayoutTests/ChangeLog
LayoutTests/css1/formatting_model/inline_elements-expected.checksum
LayoutTests/css1/formatting_model/inline_elements-expected.png
LayoutTests/css1/formatting_model/inline_elements-expected.txt
LayoutTests/css2.1/t0905-c414-flt-00-d-expected.txt
LayoutTests/css2.1/t0905-c414-flt-01-d-g-expected.txt
LayoutTests/css2.1/t0905-c414-flt-02-c-expected.txt
LayoutTests/css2.1/t0905-c414-flt-03-c-expected.txt
LayoutTests/css2.1/t0905-c414-flt-04-c-expected.txt
LayoutTests/css2.1/t0905-c414-flt-wrap-01-d-g-expected.txt
LayoutTests/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt
LayoutTests/css2.1/t0905-c5525-fltwidth-02-c-g-expected.txt
LayoutTests/css2.1/t0905-c5525-fltwidth-03-c-g-expected.txt
LayoutTests/css2.1/t090501-c414-flt-02-d-g-expected.txt
LayoutTests/css2.1/t090501-c414-flt-03-b-g-expected.txt
LayoutTests/fast/backgrounds/repeat/negative-offset-repeat-expected.txt
LayoutTests/fast/block/float/008-expected.txt
LayoutTests/fast/block/float/013-expected.checksum
LayoutTests/fast/block/float/013-expected.txt
LayoutTests/fast/block/float/029-expected.txt
LayoutTests/fast/block/float/031-expected.txt
LayoutTests/fast/block/float/float-in-float-painting-expected.txt
LayoutTests/fast/block/margin-collapse/059-expected.checksum
LayoutTests/fast/block/margin-collapse/059-expected.png
LayoutTests/fast/block/margin-collapse/059-expected.txt
LayoutTests/fast/block/margin-collapse/062-expected.txt
LayoutTests/fast/block/margin-collapse/063-expected.txt
LayoutTests/fast/box-shadow/basic-shadows-expected.txt
LayoutTests/fast/forms/floating-textfield-relayout-expected.checksum
LayoutTests/fast/forms/floating-textfield-relayout-expected.txt
LayoutTests/fast/lists/003-expected.txt
LayoutTests/fast/media/mq-relative-constraints-08-expected.txt
LayoutTests/fast/multicol/float-multicol-expected.txt
LayoutTests/fast/repaint/float-overflow-expected.checksum [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-expected.png [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-expected.txt [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-right-expected.checksum [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-right-expected.png [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-right-expected.txt [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow-right.html [new file with mode: 0644]
LayoutTests/fast/repaint/float-overflow.html [new file with mode: 0644]
LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.checksum [new file with mode: 0644]
LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.png [new file with mode: 0644]
LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.txt [new file with mode: 0644]
LayoutTests/fast/repaint/table-cell-vertical-overflow.html [new file with mode: 0644]
LayoutTests/fast/table/009-expected.checksum
LayoutTests/fast/table/009-expected.png
LayoutTests/fast/table/009-expected.txt
LayoutTests/fast/text/whitespace/012-expected.txt
LayoutTests/tables/mozilla/bugs/bug120364-expected.txt
LayoutTests/tables/mozilla/bugs/bug196870-expected.checksum
LayoutTests/tables/mozilla/bugs/bug196870-expected.png
LayoutTests/tables/mozilla/bugs/bug196870-expected.txt
LayoutTests/tables/mozilla/bugs/bug45055-2-expected.txt
LayoutTests/tables/mozilla/bugs/bug72359-expected.txt
LayoutTests/tables/mozilla/marvin/x_table_align_left-expected.txt
LayoutTests/tables/mozilla/marvin/x_table_align_right-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_caption-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_caption_top-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.checksum
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png
LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.txt
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/rendering/InlineFlowBox.cpp
WebCore/rendering/RenderBlock.cpp
WebCore/rendering/RenderBlock.h
WebCore/rendering/RenderFlexibleBox.cpp
WebCore/rendering/RenderForeignObject.cpp
WebCore/rendering/RenderHTMLCanvas.cpp
WebCore/rendering/RenderImage.cpp
WebCore/rendering/RenderLayer.cpp
WebCore/rendering/RenderLayer.h
WebCore/rendering/RenderObject.cpp
WebCore/rendering/RenderObject.h
WebCore/rendering/RenderPath.cpp
WebCore/rendering/RenderSVGContainer.cpp
WebCore/rendering/RenderSVGText.cpp
WebCore/rendering/RenderTable.cpp
WebCore/rendering/RenderTable.h
WebCore/rendering/RenderTableCell.cpp
WebCore/rendering/RenderTableCell.h
WebCore/rendering/RenderTableSection.cpp
WebCore/rendering/RenderTableSection.h

index a01ad6f..4abc05e 100644 (file)
@@ -1,3 +1,131 @@
+2007-02-18  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Hyatt.
+
+        - repaint tests for http://bugs.webkit.org/show_bug.cgi?id=12123
+          REGRESSION: Incomplete repaint of floats' overflows
+
+        - updated results for http://bugs.webkit.org/show_bug.cgi?id=10116
+          REGRESSION: Menu item drawn 2 pixels short on WWDC 2006 Attendee Site
+
+        * 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/repaint/table-cell-vertical-overflow-expected.checksum: Added.
+        * fast/repaint/table-cell-vertical-overflow-expected.png: Added.
+        * fast/repaint/table-cell-vertical-overflow-expected.txt: Added.
+        * fast/repaint/table-cell-vertical-overflow.html: Added.
+        * fast/table/009-expected.checksum:
+        * fast/table/009-expected.png:
+        * fast/table/009-expected.txt:
+        * 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_caption-expected.txt:
+        * tables/mozilla_expected_failures/marvin/table_overflow_caption_left-expected.txt:
+        * tables/mozilla_expected_failures/marvin/table_overflow_caption_right-expected.txt:
+        * tables/mozilla_expected_failures/marvin/table_overflow_caption_top-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:
+
 2007-02-18  Alexey Proskuryakov  <ap@webkit.org>
 
         Reviewed by Hyatt.
index f377452..f35429b 100644 (file)
@@ -1 +1 @@
-55a1f301085cb525112043606e0fc453
\ No newline at end of file
+b2da820c6f3f6667759c9aa205909f11
\ No newline at end of file
index 39f5406..f610b9e 100644 (file)
Binary files a/LayoutTests/css1/formatting_model/inline_elements-expected.png and b/LayoutTests/css1/formatting_model/inline_elements-expected.png differ
index 5e8be70..0df042b 100644 (file)
@@ -1,8 +1,8 @@
-layer at (0,0) size 785x792
+layer at (0,0) size 785x779
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x792
-  RenderBlock {HTML} at (0,0) size 785x792
-    RenderBody {BODY} at (8,8) size 769x776 [bgcolor=#CCCCCC]
+layer at (0,0) size 785x779
+  RenderBlock {HTML} at (0,0) size 785x779
+    RenderBody {BODY} at (8,8) size 769x763 [bgcolor=#CCCCCC]
       RenderBlock {P} at (0,0) size 769x18
         RenderText {#text} at (0,0) size 355x18
           text run at (0,0) width 355: "The style declarations which apply to the text below are:"
@@ -52,18 +52,18 @@ layer at (0,0) size 785x792
         RenderText {#text} at (83,48) size 415x15
           text run at (83,48) width 3: " "
           text run at (86,48) width 412: "The line spacing in the whole paragraph should be 12pt, with font-size 10pt."
-      RenderTable {TABLE} at (0,455) size 769x321 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 767x319
+      RenderTable {TABLE} at (0,455) size 769x308 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 767x306
           RenderTableRow {TR} at (0,0) size 767x26
             RenderTableCell {TD} at (0,0) size 767x26 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=2]
               RenderInline {STRONG} at (0,0) size 163x18
                 RenderText {#text} at (4,4) size 163x18
                   text run at (4,4) width 163: "TABLE Testing Section"
-          RenderTableRow {TR} at (0,26) size 767x293
-            RenderTableCell {TD} at (0,159) size 12x26 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,26) size 767x280
+            RenderTableCell {TD} at (0,153) size 12x26 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (4,4) size 4x18
                 text run at (4,4) width 4: " "
-            RenderTableCell {TD} at (12,26) size 755x293 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (12,26) size 755x280 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderBlock {P} at (4,4) size 747x192
                 RenderText {#text} at (0,7) size 187x18
                   text run at (0,7) width 187: "This is a paragraph that has a "
index a7cc727..6885c62 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x134
+layer at (0,0) size 800x170
   RenderBlock {HTML} at (0,0) size 800x134
     RenderBody {BODY} at (8,16) size 784x102
       RenderBlock {P} at (0,0) size 784x18 [color=#000080]
index e538a40..4412271 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x130
+layer at (0,0) size 800x162
   RenderBlock {HTML} at (0,0) size 800x130
     RenderBody {BODY} at (8,16) size 784x98
       RenderBlock {P} at (0,0) size 784x18 [color=#000080]
index 3aa79fb..10c81d7 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x68
+layer at (0,0) size 800x264
   RenderBlock {HTML} at (0,0) size 800x68
     RenderBody {BODY} at (8,16) size 784x36
       RenderBlock {P} at (0,0) size 784x36 [color=#000080]
index 630392a..77f48ea 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x68
+layer at (0,0) size 800x264
   RenderBlock {HTML} at (0,0) size 800x68
     RenderBody {BODY} at (8,16) size 784x36
       RenderBlock {P} at (0,0) size 784x36 [color=#000080]
index 54f22ba..e941322 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x68
+layer at (0,0) size 800x344
   RenderBlock {HTML} at (0,0) size 800x68
     RenderBody {BODY} at (8,16) size 784x36
       RenderBlock {P} at (0,0) size 784x36 [color=#000080]
index 929e600..3b531e8 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x156
+layer at (0,0) size 800x163
   RenderBlock {HTML} at (0,0) size 800x156
     RenderBody {BODY} at (8,16) size 784x124
       RenderBlock {P} at (0,0) size 784x18 [color=#000080]
index f7daa1d..15492d8 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x8
+layer at (0,0) size 800x260
   RenderBlock {HTML} at (0,0) size 800x8
     RenderBody {BODY} at (8,8) size 784x0
       RenderBlock (floating) {DIV} at (0,0) size 588x252 [color=#FFFFFF] [bgcolor=#000080]
index d01d197..75b2806 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x34
+layer at (0,0) size 800x54
   RenderBlock {HTML} at (0,0) size 800x34
     RenderBody {BODY} at (8,8) size 784x18
       RenderBlock {DIV} at (0,0) size 784x18
index 457299b..dfd0e9e 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x34
+layer at (0,0) size 800x44
   RenderBlock {HTML} at (0,0) size 800x34
     RenderBody {BODY} at (8,8) size 784x18
       RenderBlock {DIV} at (0,0) size 784x18
index 5e2d15c..c368da2 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x154
+layer at (0,0) size 800x218
   RenderBlock {HTML} at (0,0) size 800x154
     RenderBody {BODY} at (8,16) size 784x122
       RenderBlock {P} at (0,0) size 784x18 [color=#000080]
index c888a56..941a41f 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x155
+layer at (0,0) size 800x237
   RenderBlock {HTML} at (0,0) size 800x155
     RenderBody {BODY} at (8,16) size 784x123
       RenderBlock {P} at (0,0) size 784x37 [color=#000080]
index 5add2ab..d6dad1d 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x484
+layer at (0,0) size 800x524
   RenderBlock {HTML} at (0,0) size 800x484
     RenderBody {BODY} at (8,16) size 784x452
       RenderBlock {P} at (0,0) size 784x18
index 1924ca3..9a69e33 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 785x608
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x600
+layer at (0,0) size 785x608
   RenderBlock {HTML} at (0,0) size 785x600
     RenderBody {BODY} at (8,8) size 769x300
       RenderBlock (floating) {DIV} at (0,0) size 769x100 [bgcolor=#008000]
index 81dbf12..b5fc8ce 100644 (file)
@@ -1 +1 @@
-76249c23fcdddcecf3cdb08b2120b225
\ No newline at end of file
+f069ee9081d2de062f2c9e90efa023b9
\ No newline at end of file
index 57d5e31..563e5f2 100644 (file)
@@ -3,7 +3,7 @@ layer at (0,0) size 808x600
 layer at (0,0) size 800x8
   RenderBlock {HTML} at (0,0) size 800x8
     RenderBody {BODY} at (8,8) size 784x0
-layer at (8,64) size 800x108
+layer at (8,64) size 800x115
   RenderBlock (positioned) {DIV} at (8,64) size 800x108 [bgcolor=#0000FF]
     RenderBlock {DIV} at (38,8) size 723x57 [bgcolor=#008000] [border: (2px solid #888878) none]
       RenderText {#text} at (0,0) size 182x18
index 13a062a..8a7dec4 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x54
+layer at (0,0) size 800x166
   RenderBlock {HTML} at (0,0) size 800x54
     RenderBody {BODY} at (8,8) size 784x38
       RenderBlock (floating) {DIV} at (532,0) size 252x102 [border: (1px solid #FF0000)]
index 6f0a719..4e77a30 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x300
+layer at (0,0) size 800x332
   RenderBlock {HTML} at (0,0) size 800x300
     RenderBody {BODY} at (8,8) size 784x284
       RenderBlock {P} at (0,0) size 784x50
index d4537d1..1dd16c2 100644 (file)
@@ -12,7 +12,7 @@ layer at (0,0) size 800x600
             text run at (0,18) width 115: "issues (flickr.com)"
         RenderText {#text} at (115,18) size 597x18
           text run at (115,18) width 597: ", or rather, a related painting issue. The word \"PASS\" should appear below in translucent blue."
-layer at (8,44) size 784x125
+layer at (8,44) size 784x162
   RenderBlock {DIV} at (0,36) size 784x125
     RenderBlock (floating) {DIV} at (0,0) size 104x125
       RenderImage {IMG} at (0,0) size 100x100
index b4096fb..d80257a 100644 (file)
@@ -1 +1 @@
-8e03cda31efbafc6ddf1b53fa70376a9
\ No newline at end of file
+8f0042cc5c242365774f89743a2678a0
\ No newline at end of file
index 1136e23..217a8e8 100644 (file)
Binary files a/LayoutTests/fast/block/margin-collapse/059-expected.png and b/LayoutTests/fast/block/margin-collapse/059-expected.png differ
index 4dc3325..c62bf85 100644 (file)
@@ -9,7 +9,7 @@ layer at (0,0) size 800x306
       RenderTable {TABLE} at (0,34) size 106x206 [bgcolor=#FF0000] [border: (3px solid #000000)]
         RenderTableSection {TBODY} at (3,3) size 100x200
           RenderTableRow {TR} at (0,0) size 100x200
-            RenderTableCell {TD} at (0,0) size 50x200 [bgcolor=#FFA500] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,25) size 50x150 [bgcolor=#FFA500] [r=0 c=0 rs=1 cs=1]
               RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#FF0000]
                 RenderBlock {DIV} at (0,0) size 50x150 [bgcolor=#00FFFF]
               RenderBlock {DIV} at (0,50) size 50x50 [bgcolor=#FFFF00]
index b163544..013f594 100644 (file)
@@ -1,11 +1,11 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x46 layerType: background only
+layer at (0,0) size 800x110 layerType: background only
 layer at (10,46) size 320x64
   RenderBlock (positioned) zI: -1 {DIV} at (10,46) size 320x64 [color=#FFFF00] [bgcolor=#FF0000]
     RenderText zI: -1 {#text} at (0,0) size 36x18
       text run at (0,0) width 36: "FAIL"
-layer at (0,0) size 800x46 layerType: foreground only
+layer at (0,0) size 800x110 layerType: foreground only
   RenderBlock {HTML} at (0,0) size 800x46
     RenderBody {BODY} at (10,46) size 780x0
       RenderBlock {DIV} at (2,0) size 776x0
index d0fa7b6..be22032 100644 (file)
@@ -1,11 +1,11 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x49 layerType: background only
+layer at (0,0) size 800x77 layerType: background only
 layer at (10,13) size 320x64
   RenderBlock (positioned) zI: -1 {DIV} at (10,13) size 320x64 [color=#FFFF00] [bgcolor=#FF0000]
     RenderText zI: -1 {#text} at (0,0) size 36x18
       text run at (0,0) width 36: "FAIL"
-layer at (0,0) size 800x49 layerType: foreground only
+layer at (0,0) size 800x77 layerType: foreground only
   RenderBlock {HTML} at (0,0) size 800x49
     RenderBody {BODY} at (10,2) size 780x1
       RenderBlock {DIV} at (2,0) size 776x1
index 780810a..5efe150 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 785x671
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x658
+layer at (0,0) size 785x671
   RenderBlock {HTML} at (0,0) size 785x658
     RenderBody {BODY} at (8,8) size 769x634
       RenderBlock (anonymous) at (0,0) size 769x150
index 1739db7..9253b09 100644 (file)
@@ -17,7 +17,7 @@ layer at (0,0) size 800x600
         RenderText {#text} at (59,18) size 4x18
           text run at (59,18) width 4: "."
       RenderBlock {HR} at (0,52) size 784x2 [border: (1px inset #000000)]
-layer at (8,70) size 784x0
+layer at (8,70) size 784x21
   RenderBlock (relative positioned) {DIV} at (0,62) size 784x0
     RenderTextControl {INPUT} at (0,2) size 392x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
 layer at (11,75) size 386x13
index 239e1ba..24013af 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x334
+layer at (0,0) size 800x350
   RenderBlock {HTML} at (0,0) size 800x334
     RenderBody {BODY} at (8,16) size 784x302
       RenderBlock (floating) {DIV} at (0,0) size 470x334
index 7b0793d..c5c4435 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 785x642
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x600
+layer at (0,0) size 785x642
   RenderBlock {HTML} at (0,0) size 785x600
     RenderBody {BODY} at (8,8) size 769x576
       RenderBlock {P} at (0,0) size 769x18 [color=#008000]
index 75dc6ce..b20bb68 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 785x794
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x670
+layer at (0,0) size 785x794
   RenderBlock {HTML} at (0,0) size 785x670
     RenderBody {BODY} at (8,19) size 769x635
       RenderBlock {DIV} at (0,0) size 769x28 [bgcolor=#00FFFF]
diff --git a/LayoutTests/fast/repaint/float-overflow-expected.checksum b/LayoutTests/fast/repaint/float-overflow-expected.checksum
new file mode 100644 (file)
index 0000000..8161b29
--- /dev/null
@@ -0,0 +1 @@
+4c0221aa9843edaa77971b6467ebaa88
\ No newline at end of file
diff --git a/LayoutTests/fast/repaint/float-overflow-expected.png b/LayoutTests/fast/repaint/float-overflow-expected.png
new file mode 100644 (file)
index 0000000..af9f916
Binary files /dev/null and b/LayoutTests/fast/repaint/float-overflow-expected.png differ
diff --git a/LayoutTests/fast/repaint/float-overflow-expected.txt b/LayoutTests/fast/repaint/float-overflow-expected.txt
new file mode 100644 (file)
index 0000000..3741815
--- /dev/null
@@ -0,0 +1,143 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x588
+  RenderBlock {HTML} at (0,0) size 800x588
+    RenderBody {BODY} at (8,8) size 784x572
+      RenderBlock {DIV} at (2,0) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-2,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (-2,1) size 16x16
+                  text run at (-2,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,39) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-2,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (-8,1) size 16x16
+                  text run at (-8,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,78) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (-2,1) size 16x16
+                  text run at (-2,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,117) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (0,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (-8,1) size 16x16
+                  text run at (-8,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,156) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (0,1) size 16x16
+                  text run at (0,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,195) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderFlexibleBox {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (0,1) size 16x16
+                  text run at (0,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,234) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderFlexibleBox {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 32x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (0,1) size 16x16
+                  text run at (0,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,273) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderTable {TABLE} at (51,7) size 58x28 [border: (1px solid #800080)]
+          RenderTableSection {TBODY} at (6,6) size 46x16
+            RenderTableRow {TR} at (0,2) size 46x12
+              RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                  RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                    RenderText {#text} at (-4,1) size 16x16
+                      text run at (-4,1) width 16: "x"
+                  RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,312) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderTable {TABLE} at (51,7) size 58x28 [border: (1px solid #800080)]
+          RenderTableSection {TBODY} at (6,6) size 46x16
+            RenderTableRow {TR} at (0,2) size 46x12
+              RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                  RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                    RenderText {#text} at (-12,1) size 16x16
+                      text run at (-12,1) width 16: "x"
+                  RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,351) size 780x52 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock (anonymous) at (1,7) size 778x32
+          RenderTable {TABLE} at (50,0) size 58x28 [border: (1px solid #800080)]
+            RenderTableSection {TBODY} at (6,6) size 46x16
+              RenderTableRow {TR} at (0,2) size 46x12
+                RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                  RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                    RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                      RenderText {#text} at (-12,1) size 16x16
+                        text run at (-12,1) width 16: "x"
+                    RenderText {#text} at (0,0) size 0x0
+          RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,405) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+      RenderBlock {DIV} at (2,444) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+      RenderBlock {DIV} at (2,483) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+      RenderBlock {DIV} at (2,522) size 780x50 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (1,1) size 0x6
+        RenderBlock {DIV} at (51,7) size 62x36 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 32x20 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (0,1) size 16x16
+                  text run at (0,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+          RenderText {#text} at (0,0) size 0x0
+layer at (59,426) size 40x18
+  RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+    RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+      RenderText {#text} at (0,1) size 16x16
+        text run at (0,1) width 16: "x"
+    RenderText {#text} at (0,0) size 0x0
+layer at (67,465) size 50x18
+  RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+    RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+      RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+        RenderText {#text} at (0,1) size 16x16
+          text run at (0,1) width 16: "x"
+      RenderText {#text} at (0,0) size 0x0
+layer at (61,498) size 62x24
+  RenderBlock {DIV} at (51,7) size 62x22 [border: (1px solid #800080)]
+    RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+      RenderBlock (floating) {DIV} at (-8,0) size 40x10 [bgcolor=#ADD8E6]
+        RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+          RenderText {#text} at (0,1) size 16x16
+            text run at (0,1) width 16: "x"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/fast/repaint/float-overflow-right-expected.checksum b/LayoutTests/fast/repaint/float-overflow-right-expected.checksum
new file mode 100644 (file)
index 0000000..c0c227a
--- /dev/null
@@ -0,0 +1 @@
+34004910c9b8d766070b703d3a57e7e6
\ No newline at end of file
diff --git a/LayoutTests/fast/repaint/float-overflow-right-expected.png b/LayoutTests/fast/repaint/float-overflow-right-expected.png
new file mode 100644 (file)
index 0000000..090bfe4
Binary files /dev/null and b/LayoutTests/fast/repaint/float-overflow-right-expected.png differ
diff --git a/LayoutTests/fast/repaint/float-overflow-right-expected.txt b/LayoutTests/fast/repaint/float-overflow-right-expected.txt
new file mode 100644 (file)
index 0000000..4ef09a6
--- /dev/null
@@ -0,0 +1,143 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x588
+  RenderBlock {HTML} at (0,0) size 800x588
+    RenderBody {BODY} at (8,8) size 784x572
+      RenderBlock {DIV} at (2,0) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (12,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (26,1) size 16x16
+                  text run at (26,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,39) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (12,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (32,1) size 16x16
+                  text run at (32,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,78) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (26,1) size 16x16
+                  text run at (26,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,117) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (10,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (32,1) size 16x16
+                  text run at (32,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,156) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (24,1) size 16x16
+                  text run at (24,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,195) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderFlexibleBox {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (24,1) size 16x16
+                  text run at (24,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,234) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderFlexibleBox {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (24,6) size 32x10 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (0,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (24,1) size 16x16
+                  text run at (24,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,273) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderTable {TABLE} at (671,7) size 58x28 [border: (1px solid #800080)]
+          RenderTableSection {TBODY} at (6,6) size 46x16
+            RenderTableRow {TR} at (0,2) size 46x12
+              RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                  RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                    RenderText {#text} at (28,1) size 16x16
+                      text run at (28,1) width 16: "x"
+                  RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,312) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderTable {TABLE} at (671,7) size 58x28 [border: (1px solid #800080)]
+          RenderTableSection {TBODY} at (6,6) size 46x16
+            RenderTableRow {TR} at (0,2) size 46x12
+              RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                  RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                    RenderText {#text} at (36,1) size 16x16
+                      text run at (36,1) width 16: "x"
+                  RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,351) size 780x52 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock (anonymous) at (1,7) size 778x32
+          RenderTable {TABLE} at (670,0) size 58x28 [border: (1px solid #800080)]
+            RenderTableSection {TBODY} at (6,6) size 46x16
+              RenderTableRow {TR} at (0,2) size 46x12
+                RenderTableCell {TD} at (2,2) size 42x12 [bgcolor=#FFC0CB] [r=0 c=0 rs=1 cs=1]
+                  RenderBlock (floating) {DIV} at (1,1) size 40x10 [bgcolor=#ADD8E6]
+                    RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                      RenderText {#text} at (36,1) size 16x16
+                        text run at (36,1) width 16: "x"
+                    RenderText {#text} at (0,0) size 0x0
+          RenderText {#text} at (0,0) size 0x0
+      RenderBlock {DIV} at (2,405) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+      RenderBlock {DIV} at (2,444) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+      RenderBlock {DIV} at (2,483) size 780x37 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+      RenderBlock {DIV} at (2,522) size 780x50 [border: (1px dotted #D3D3D3)]
+        RenderBlock {DIV} at (779,1) size 0x6
+        RenderBlock {DIV} at (667,7) size 62x36 [border: (1px solid #800080)]
+          RenderBlock {DIV} at (24,6) size 32x20 [bgcolor=#FFC0CB]
+            RenderBlock (floating) {DIV} at (0,0) size 40x10 [bgcolor=#ADD8E6]
+              RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+                RenderText {#text} at (24,1) size 16x16
+                  text run at (24,1) width 16: "x"
+              RenderText {#text} at (0,0) size 0x0
+          RenderText {#text} at (0,0) size 0x0
+layer at (701,426) size 40x18
+  RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+    RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+      RenderText {#text} at (24,1) size 16x16
+        text run at (24,1) width 16: "x"
+    RenderText {#text} at (0,0) size 0x0
+layer at (683,465) size 58x18
+  RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+    RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+      RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+        RenderText {#text} at (24,1) size 16x16
+          text run at (24,1) width 16: "x"
+      RenderText {#text} at (0,0) size 0x0
+layer at (677,498) size 64x24
+  RenderBlock {DIV} at (667,7) size 62x22 [border: (1px solid #800080)]
+    RenderBlock {DIV} at (6,6) size 50x10 [bgcolor=#FFC0CB]
+      RenderBlock (floating) {DIV} at (18,0) size 40x10 [bgcolor=#ADD8E6]
+        RenderInline {SPAN} at (0,0) size 16x16 [color=#0000FF]
+          RenderText {#text} at (24,1) size 16x16
+            text run at (24,1) width 16: "x"
+        RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/fast/repaint/float-overflow-right.html b/LayoutTests/fast/repaint/float-overflow-right.html
new file mode 100644 (file)
index 0000000..152db4f
--- /dev/null
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <title>Repaint test for http://bugs.webkit.org/show_bug.cgi?id=12123</title>
+    <style>
+        .spacer { width: 0; }
+        .test { direction: rtl; border: thin dotted lightgray; margin: 2px; height: 35px; }
+        .outer { border: thin solid purple; padding: 5px; width: 50px; margin-right: 50px; }
+        .outer > div { height: 10px; background-color: pink; }
+        .outer > div > div { width: 40px; height: 10px; background-color: lightblue; }
+        span { font-family: Ahem; color: blue; }
+        .box { display: -webkit-box; }
+    </style>
+    <script src="repaint.js"></script>
+    <script>
+        function repaintTest()
+        {
+            for (i = 1; i < 15; ++i)
+                document.getElementById("spacer" + i).style.height = "6px";
+        }
+    </script>
+</head>
+<body onload="runRepaintTest()">
+    <div class="test">
+        <div class="spacer" id="spacer1"></div>
+        <div class="outer">
+            <div>
+                <div style="float: right; margin-right: -2px;">
+                    <span style="margin-right: -2px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="test">
+        <div class="spacer" id="spacer2"></div>
+        <div class="outer">
+            <div>
+                <div style="float: right; margin-right: -2px;">
+                    <span style="margin-right: -8px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer3"></div>
+        <div class="outer">
+            <div>
+                <div style="float: right; margin-right: -8px;">
+                    <span style="margin-right: -2px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer4"></div>
+        <div class="outer">
+            <div>
+                <div style="float: right;">
+                    <span style="margin-right: -8px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer5"></div>
+        <div class="outer">
+            <div>
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer6"></div>
+        <div class="outer box" style="-webkit-box-orient: vertical;">
+            <div>
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer12"></div>
+        <div class="outer box" style="-webkit-box-orient: horizontal;">
+            <div>
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer7"></div>
+        <table class="outer">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: right;">
+                        <span style="margin-right: -4px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer8"></div>
+        <table class="outer">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: right;">
+                        <span style="margin-right: -12px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test" style="height: 50px;">
+        <div class="spacer" id="spacer14"></div>
+        <table class="outer" style="display: inline-table;">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: right;">
+                        <span style="margin-right: -12px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer9"></div>
+        <div class="outer">
+            <div>
+                <div style="opacity: 0.75; float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer10"></div>
+        <div class="outer">
+            <div style="opacity: 0.75;">
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer11"></div>
+        <div class="outer" style="opacity: 0.75">
+            <div>
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="test" style="height: 48px">
+        <div class="spacer" id="spacer13"></div>
+        <div class="outer">
+            <div style="display: inline-block; height: 20px;">
+                <div style="float: right; margin-right: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</body>
+</html>
diff --git a/LayoutTests/fast/repaint/float-overflow.html b/LayoutTests/fast/repaint/float-overflow.html
new file mode 100644 (file)
index 0000000..f2e7a45
--- /dev/null
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <title>Repaint test for http://bugs.webkit.org/show_bug.cgi?id=12123</title>
+    <style>
+        .spacer { width: 0; }
+        .test { border: thin dotted lightgray; margin: 2px; height: 35px; }
+        .outer { border: thin solid purple; padding: 5px; width: 50px; margin-left: 50px; }
+        .outer > div { height: 10px; background-color: pink; }
+        .outer > div > div { width: 40px; height: 10px; background-color: lightblue; }
+        span { font-family: Ahem; color: blue; }
+        .box { display: -webkit-box; }
+    </style>
+    <script src="repaint.js"></script>
+    <script>
+        function repaintTest()
+        {
+            for (i = 1; i < 15; ++i)
+                document.getElementById("spacer" + i).style.height = "6px";
+        }
+    </script>
+</head>
+<body onload="runRepaintTest()">
+    <div class="test">
+        <div class="spacer" id="spacer1"></div>
+        <div class="outer">
+            <div>
+                <div style="float: left; margin-left: -2px;">
+                    <span style="margin-left: -2px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="test">
+        <div class="spacer" id="spacer2"></div>
+        <div class="outer">
+            <div>
+                <div style="float: left; margin-left: -2px;">
+                    <span style="margin-left: -8px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer3"></div>
+        <div class="outer">
+            <div>
+                <div style="float: left; margin-left: -8px;">
+                    <span style="margin-left: -2px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer4"></div>
+        <div class="outer">
+            <div>
+                <div style="float: left;">
+                    <span style="margin-left: -8px;">x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer5"></div>
+        <div class="outer">
+            <div>
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer6"></div>
+        <div class="outer box" style="-webkit-box-orient: vertical;">
+            <div>
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer12"></div>
+        <div class="outer box" style="-webkit-box-orient: horizontal;">
+            <div>
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer7"></div>
+        <table class="outer">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: left;">
+                        <span style="margin-left: -4px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer8"></div>
+        <table class="outer">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: left;">
+                        <span style="margin-left: -12px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test" style="height: 50px;">
+        <div class="spacer" id="spacer14"></div>
+        <table class="outer" style="display: inline-table;">
+            <tr>
+                <td style="height: 10px; background-color: pink; width: 100%;">
+                    <div style="width: 40px; height: 10px; background-color: lightblue; float: left;">
+                        <span style="margin-left: -12px;">x</span>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer9"></div>
+        <div class="outer">
+            <div>
+                <div style="opacity: 0.75; float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer10"></div>
+        <div class="outer">
+            <div style="opacity: 0.75;">
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="test">
+        <div class="spacer" id="spacer11"></div>
+        <div class="outer" style="opacity: 0.75">
+            <div>
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="test" style="height: 48px">
+        <div class="spacer" id="spacer13"></div>
+        <div class="outer">
+            <div style="display: inline-block; height: 20px;">
+                <div style="float: left; margin-left: -8px;">
+                    <span>x</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</body>
+</html>
diff --git a/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.checksum b/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.checksum
new file mode 100644 (file)
index 0000000..a8f63af
--- /dev/null
@@ -0,0 +1 @@
+3a249e71722f4e001d26a122fd5a44cc
\ No newline at end of file
diff --git a/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.png b/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.png
new file mode 100644 (file)
index 0000000..aff49e5
Binary files /dev/null and b/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.png differ
diff --git a/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.txt b/LayoutTests/fast/repaint/table-cell-vertical-overflow-expected.txt
new file mode 100644 (file)
index 0000000..2a8f6f9
--- /dev/null
@@ -0,0 +1,27 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,50) size 784x542
+      RenderTable {TABLE} at (0,0) size 338x64
+        RenderTableSection {TBODY} at (0,0) size 338x64
+          RenderTableRow {TR} at (0,2) size 338x60
+            RenderTableCell {TD} at (2,2) size 110x60 [border: (4px dotted #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (5,5) size 100x50 [bgcolor=#90EE90]
+            RenderTableCell {TD} at (114,22) size 110x20 [border: (4px dotted #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (5,5) size 100x10 [bgcolor=#90EE90]
+                RenderBlock {DIV} at (0,0) size 50x100 [bgcolor=#87CEEB]
+            RenderTableCell {TD} at (226,27) size 110x10 [border: (4px dotted #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderBlock {DIV} at (5,-70) size 100x10 [bgcolor=#90EE90]
+                RenderBlock {DIV} at (0,0) size 50x100 [bgcolor=#87CEEB]
+      RenderTable {TABLE} at (0,214) size 322x60 [border: (2px none #808080)]
+        RenderTableSection {TBODY} at (2,2) size 318x56
+          RenderTableRow {TR} at (0,0) size 318x56
+            RenderTableCell {TD} at (0,0) size 106x56 [border: (2px dotted #000000)] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 100x50 [bgcolor=#90EE90]
+            RenderTableCell {TD} at (106,20) size 106x16 [border: (2px dotted #000000)] [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 100x10 [bgcolor=#90EE90]
+                RenderBlock {DIV} at (0,0) size 50x100 [bgcolor=#87CEEB]
+            RenderTableCell {TD} at (212,25) size 106x6 [border: (2px dotted #000000)] [r=0 c=2 rs=1 cs=1]
+              RenderBlock {DIV} at (3,-72) size 100x10 [bgcolor=#90EE90]
+                RenderBlock {DIV} at (0,0) size 50x100 [bgcolor=#87CEEB]
diff --git a/LayoutTests/fast/repaint/table-cell-vertical-overflow.html b/LayoutTests/fast/repaint/table-cell-vertical-overflow.html
new file mode 100644 (file)
index 0000000..bafc8ca
--- /dev/null
@@ -0,0 +1,52 @@
+<head>
+    <title></title>
+    <script>
+        if (window.layoutTestController)
+            layoutTestController.testRepaint();
+    </script>
+    <style>
+        td { border: 4px dotted black; }
+    </style>
+</head>
+<body>
+    <table style="margin-top: 50px;">
+        <tr>
+            <td>
+                <div style="height: 50px; width: 100px; background: lightgreen;">
+                </div>
+            </td>
+            <td>
+                <div style="height: 10px; width: 100px; background: lightgreen;">
+                    <div style="height: 100px; width: 50px; background: skyblue;">
+                    </div>
+                </div>
+            </td>
+            <td>
+                <div style="height: 10px; width: 100px; background: lightgreen;">
+                    <div style="margin-top: -75px; height: 100px; width: 50px; background: skyblue;">
+                    </div>
+                </div>
+            </td>
+        </tr>
+    </table>
+    <table style="margin-top: 150px; border-collapse: collapse;">
+        <tr>
+            <td>
+                <div style="height: 50px; width: 100px; background: lightgreen;">
+                </div>
+            </td>
+            <td>
+                <div style="height: 10px; width: 100px; background: lightgreen;">
+                    <div style="height: 100px; width: 50px; background: skyblue;">
+                    </div>
+                </div>
+            </td>
+            <td>
+                <div style="height: 10px; width: 100px; background: lightgreen;">
+                    <div style="margin-top: -75px; height: 100px; width: 50px; background: skyblue;">
+                    </div>
+                </div>
+            </td>
+        </tr>
+    </table>
+</body>
index 06520e0..20cb619 100644 (file)
@@ -1 +1 @@
-97ea3f069f0cfaf6898e9f733f98c33c
\ No newline at end of file
+12a8a4de3eab368c50a059827e98cb07
\ No newline at end of file
index af15972..8da500a 100644 (file)
Binary files a/LayoutTests/fast/table/009-expected.png and b/LayoutTests/fast/table/009-expected.png differ
index 91db015..2a5bcd6 100644 (file)
@@ -3,11 +3,11 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (0,0) size 800x584 [bgcolor=#FFFFFF]
-      RenderBlock {CENTER} at (0,0) size 800x222
-        RenderTable {TABLE} at (0,0) size 800x222 [bgcolor=#CCCCCC] [border: (1px outset #808080)]
-          RenderTableSection {TBODY} at (1,1) size 798x220
-            RenderTableRow {TR} at (0,0) size 798x220
-              RenderTableCell {TD} at (0,0) size 798x220 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+      RenderBlock {CENTER} at (0,0) size 800x58
+        RenderTable {TABLE} at (0,0) size 800x58 [bgcolor=#CCCCCC] [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 798x56
+            RenderTableRow {TR} at (0,0) size 798x56
+              RenderTableCell {TD} at (0,0) size 798x56 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderBlock {DIV} at (82,1) size 634x54 [border: (2px solid #FF0000)]
                   RenderTable {TABLE} at (2,2) size 630x216 [bgcolor=#CCCCCC] [border: (2px outset #808080)]
                     RenderTableSection {TBODY} at (2,2) size 626x212
@@ -18,8 +18,8 @@ layer at (0,0) size 800x600
                               RenderTableRow {TR} at (0,0) size 97x180
                                 RenderTableCell {TD} at (0,0) size 97x180 [r=0 c=0 rs=1 cs=1]
                                   RenderImage {IMG} at (0,0) size 97x180
-      RenderBlock {P} at (0,238) size 800x0
-      RenderBlock (floating) {DIV} at (0,238) size 104x54 [border: (2px solid #FF0000)]
+      RenderBlock {P} at (0,74) size 800x0
+      RenderBlock (floating) {DIV} at (0,74) size 104x54 [border: (2px solid #FF0000)]
         RenderText {#text} at (2,2) size 82x54
           text run at (2,2) width 82: "Here is some"
           text run at (2,20) width 31: "text. "
@@ -39,4 +39,4 @@ layer at (0,0) size 800x600
         RenderBR {BR} at (67,142) size 0x0
         RenderText {#text} at (2,146) size 45x18
           text run at (2,146) width 45: "Really."
-      RenderBlock {P} at (0,238) size 800x0
+      RenderBlock {P} at (0,74) size 800x0
index 30f6d67..634c5a1 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x76
+layer at (0,0) size 800x156
   RenderBlock {HTML} at (0,0) size 800x76
     RenderBody {BODY} at (8,8) size 784x52
       RenderBlock (anonymous) at (0,0) size 784x18
index e7cc7b4..db8de20 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 785x1813
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x600
+layer at (0,0) size 785x1813
   RenderBlock {HTML} at (0,0) size 785x600
     RenderBody {BODY} at (8,8) size 769x584
       RenderText {#text} at (0,0) size 21x18
index bccc675..fdb921c 100644 (file)
@@ -1 +1 @@
-1bec2a2cd4977686d9d5a1e056c8fdc2
\ No newline at end of file
+904b2a329a83e47c32af9dde9b082774
\ No newline at end of file
index f35014a..f6cd7df 100644 (file)
Binary files a/LayoutTests/tables/mozilla/bugs/bug196870-expected.png and b/LayoutTests/tables/mozilla/bugs/bug196870-expected.png differ
index b0e72eb..6327326 100644 (file)
@@ -1,11 +1,11 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x103
-  RenderBlock {HTML} at (0,0) size 800x103
-    RenderBody {BODY} at (8,8) size 784x87
-      RenderTable {TABLE} at (0,0) size 130x87
-        RenderTableSection {TBODY} at (0,0) size 130x87
-          RenderTableRow {TR} at (0,2) size 130x83
-            RenderTableCell {TD} at (2,2) size 126x83 [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x92
+  RenderBlock {HTML} at (0,0) size 800x47
+    RenderBody {BODY} at (8,8) size 784x31
+      RenderTable {TABLE} at (0,0) size 130x31
+        RenderTableSection {TBODY} at (0,0) size 130x31
+          RenderTableRow {TR} at (0,2) size 130x27
+            RenderTableCell {TD} at (2,2) size 126x27 [r=0 c=0 rs=1 cs=1]
               RenderBlock {DIV} at (100,1) size 25x25
                 RenderImage {IMG} at (0,0) size 77x77
index 678cd9c..9ab8c34 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x8
+layer at (0,0) size 800x136
   RenderBlock {HTML} at (0,0) size 800x8
     RenderBody {BODY} at (8,8) size 784x0 [bgcolor=#FFFFFF]
       RenderTable {TABLE} at (0,0) size 86x123
index 089da44..0bdfb43 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x8
+layer at (0,0) size 800x62
   RenderBlock {html} at (0,0) size 800x8
     RenderBody {body} at (8,8) size 784x0
       RenderBlock (floating) {float} at (0,0) size 157x54 [bgcolor=#FF0000]
index fe920a1..f0d6432 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x8
+layer at (0,0) size 800x36
   RenderBlock {html} at (0,0) size 800x8
     RenderBody {body} at (8,8) size 784x0
       RenderTable {table} at (0,0) size 288x28 [border: (1px outset #808080)]
index 1ce3bb4..b828649 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x8
+layer at (0,0) size 800x36
   RenderBlock {html} at (0,0) size 800x8
     RenderBody {body} at (8,8) size 784x0
       RenderTable {table} at (487,0) size 297x28 [border: (1px outset #808080)]
index 4af8a0f..3b7c881 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x138
+layer at (0,0) size 800x411
   RenderBlock {HTML} at (0,0) size 800x138
     RenderBody {BODY} at (8,8) size 784x122
       RenderTable {TABLE} at (0,0) size 200x122 [border: (1px outset #808080)]
index 4af8a0f..3b7c881 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x138
+layer at (0,0) size 800x411
   RenderBlock {HTML} at (0,0) size 800x138
     RenderBody {BODY} at (8,8) size 784x122
       RenderTable {TABLE} at (0,0) size 200x122 [border: (1px outset #808080)]
index 4af8a0f..3b7c881 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x138
+layer at (0,0) size 800x411
   RenderBlock {HTML} at (0,0) size 800x138
     RenderBody {BODY} at (8,8) size 784x122
       RenderTable {TABLE} at (0,0) size 200x122 [border: (1px outset #808080)]
index 4af8a0f..3b7c881 100644 (file)
@@ -1,6 +1,6 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x138
+layer at (0,0) size 800x411
   RenderBlock {HTML} at (0,0) size 800x138
     RenderBody {BODY} at (8,8) size 784x122
       RenderTable {TABLE} at (0,0) size 200x122 [border: (1px outset #808080)]
index 17d1cc4..9cdeefd 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow-expected.png differ
index c9ca5c8..7ce6b57 100644 (file)
@@ -1,15 +1,15 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x316
-  RenderBlock {HTML} at (0,0) size 800x316
-    RenderBody {BODY} at (8,8) size 784x300
-      RenderTable {TABLE} at (0,0) size 200x300 [bgcolor=#0000FF]
-        RenderTableSection {TBODY} at (0,0) size 200x300
-          RenderTableRow {TR} at (0,0) size 200x300
-            RenderTableCell {TD} at (0,141) size 59x18 [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x308
+  RenderBlock {HTML} at (0,0) size 800x116
+    RenderBody {BODY} at (8,8) size 784x100
+      RenderTable {TABLE} at (0,0) size 200x100 [bgcolor=#0000FF]
+        RenderTableSection {TBODY} at (0,0) size 200x100
+          RenderTableRow {TR} at (0,0) size 200x100
+            RenderTableCell {TD} at (0,41) size 59x18 [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (0,0) size 21x18
                 text run at (0,0) width 21: "foo"
-            RenderTableCell {TD} at (59,0) size 141x300 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (59,0) size 141x50 [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#008000]
                 RenderBlock {DIV} at (0,0) size 400x300 [bgcolor=#FF0000]
                   RenderText {#text} at (0,0) size 8x18
index 3cc935c..a43d51b 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_row-expected.png differ
index e671b6c..c58685c 100644 (file)
@@ -1,18 +1,18 @@
-layer at (0,0) size 785x619
+layer at (0,0) size 785x612
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x619
-  RenderBlock {HTML} at (0,0) size 785x619
-    RenderBody {BODY} at (8,8) size 769x603
-      RenderTable {TABLE} at (0,0) size 229x603 [border: (1px outset #808080)]
+layer at (0,0) size 785x612
+  RenderBlock {HTML} at (0,0) size 785x416
+    RenderBody {BODY} at (8,8) size 769x400
+      RenderTable {TABLE} at (0,0) size 229x400 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 227x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (102,3) size 22x18
             text run at (102,3) width 22: "cap"
-        RenderTableSection {TBODY} at (1,207) size 227x395
-          RenderTableRow {TR} at (0,30) size 227x335
-            RenderTableCell {TD} at (30,172) size 53x50 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,207) size 227x192
+          RenderTableRow {TR} at (0,30) size 227x132
+            RenderTableCell {TD} at (30,71) size 53x50 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (16,16) size 21x18
                 text run at (16,16) width 21: "foo"
-            RenderTableCell {TD} at (113,30) size 84x335 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (113,78) size 84x84 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (16,16) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index 0d2aa40..7985757 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_table-expected.png differ
index b0c4297..7f0184c 100644 (file)
@@ -1,18 +1,18 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x556
-  RenderBlock {HTML} at (0,0) size 800x556
-    RenderBody {BODY} at (8,8) size 784x540
-      RenderTable {TABLE} at (0,0) size 200x540 [bgcolor=#0000FF]
+layer at (0,0) size 800x578
+  RenderBlock {HTML} at (0,0) size 800x356
+    RenderBody {BODY} at (8,8) size 784x340
+      RenderTable {TABLE} at (0,0) size 200x340 [bgcolor=#0000FF]
         RenderBlock {CAPTION} at (0,0) size 200x200 [bgcolor=#FFA500]
           RenderText {#text} at (89,0) size 22x18
             text run at (89,0) width 22: "cap"
-        RenderTableSection {TBODY} at (0,200) size 200x340
-          RenderTableRow {TR} at (0,0) size 200x340
-            RenderTableCell {TD} at (0,141) size 80x58 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (0,200) size 200x140
+          RenderTableRow {TR} at (0,0) size 200x140
+            RenderTableCell {TD} at (0,41) size 80x58 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (20,20) size 21x18
                 text run at (20,20) width 21: "foo"
-            RenderTableCell {TD} at (80,0) size 120x340 [bgcolor=#FFFF00] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (80,50) size 120x90 [bgcolor=#FFFF00] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (20,20) size 50x50 [bgcolor=#008000]
                 RenderBlock {DIV} at (0,0) size 400x300 [bgcolor=#FF0000]
                   RenderText {#text} at (0,0) size 8x18
index 716e02b..666b14a 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_dirty_reflow_tbody-expected.png differ
index a5bb4f8..5dec1c5 100644 (file)
@@ -1,13 +1,13 @@
-layer at (0,0) size 785x735
+layer at (0,0) size 785x728
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x735
-  RenderBlock {HTML} at (0,0) size 785x735
-    RenderBody {BODY} at (8,8) size 769x719
-      RenderTable {TABLE} at (0,0) size 229x719 [border: (1px outset #808080)]
+layer at (0,0) size 785x728
+  RenderBlock {HTML} at (0,0) size 785x532
+    RenderBody {BODY} at (8,8) size 769x516
+      RenderTable {TABLE} at (0,0) size 229x516 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 227x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (102,3) size 22x18
             text run at (102,3) width 22: "cap"
-        RenderTableSection {TBODY} at (1,207) size 227x511
+        RenderTableSection {TBODY} at (1,207) size 227x308
           RenderTableRow {TR} at (0,30) size 227x86
             RenderTableCell {TD} at (30,48) size 53x50 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (16,16) size 21x18
@@ -21,11 +21,11 @@ layer at (0,0) size 785x735
               RenderBR {BR} at (38,34) size 0x18
               RenderText {#text} at (16,52) size 22x18
                 text run at (16,52) width 22: "zap"
-          RenderTableRow {TR} at (0,146) size 227x335
-            RenderTableCell {TD} at (30,288) size 53x50 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,146) size 227x132
+            RenderTableCell {TD} at (30,187) size 53x50 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (16,16) size 21x18
                 text run at (16,16) width 21: "foo"
-            RenderTableCell {TD} at (113,146) size 84x335 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (113,194) size 84x84 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (16,16) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index a7c20be..b311177 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_table-expected.png differ
index ad9793c..e8ae7f5 100644 (file)
@@ -1,13 +1,13 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x529
-  RenderBlock {HTML} at (0,0) size 800x529
-    RenderBody {BODY} at (8,8) size 784x513
-layer at (8,8) size 22x513 clip at (9,9) size 20x511 scrollWidth 707
-  RenderTable {TABLE} at (0,0) size 22x513 [border: (1px outset #808080)]
-    RenderTableSection {TBODY} at (1,1) size 20x511
-      RenderTableRow {TR} at (0,2) size 20x507
-        RenderTableCell {TD} at (2,2) size 16x507 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x38
+  RenderBlock {HTML} at (0,0) size 800x38
+    RenderBody {BODY} at (8,8) size 784x22
+layer at (8,8) size 22x22 clip at (9,9) size 20x20 scrollWidth 707 scrollHeight 507
+  RenderTable {TABLE} at (0,0) size 22x22 [border: (1px outset #808080)]
+    RenderTableSection {TBODY} at (1,1) size 20x20
+      RenderTableRow {TR} at (0,2) size 20x16
+        RenderTableCell {TD} at (2,2) size 16x16 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
           RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
             RenderBlock {DIV} at (1,1) size 702x502 [border: (1px solid #FF0000)]
               RenderText {#text} at (1,1) size 60x18
index a7c20be..b311177 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody-expected.png differ
index a47698a..b3bf077 100644 (file)
@@ -1,13 +1,13 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x529
-  RenderBlock {HTML} at (0,0) size 800x529
-    RenderBody {BODY} at (8,8) size 784x513
-      RenderTable {TABLE} at (0,0) size 22x513 [border: (1px outset #808080)]
-layer at (9,9) size 20x511 scrollWidth 707
-  RenderTableSection {TBODY} at (1,1) size 20x511
-    RenderTableRow {TR} at (0,2) size 20x507
-      RenderTableCell {TD} at (2,2) size 16x507 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x38
+  RenderBlock {HTML} at (0,0) size 800x38
+    RenderBody {BODY} at (8,8) size 784x22
+      RenderTable {TABLE} at (0,0) size 22x22 [border: (1px outset #808080)]
+layer at (9,9) size 20x20 scrollWidth 707 scrollHeight 507
+  RenderTableSection {TBODY} at (1,1) size 20x20
+    RenderTableRow {TR} at (0,2) size 20x16
+      RenderTableCell {TD} at (2,2) size 16x16 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
         RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
           RenderBlock {DIV} at (1,1) size 702x502 [border: (1px solid #FF0000)]
             RenderText {#text} at (1,1) size 60x18
index a7c20be..10e84bd 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_hidden_tr-expected.png differ
index 33acb6a..f4419b9 100644 (file)
@@ -1,13 +1,13 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x529
-  RenderBlock {HTML} at (0,0) size 800x529
-    RenderBody {BODY} at (8,8) size 784x513
-      RenderTable {TABLE} at (0,0) size 22x513 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 20x511
-layer at (9,11) size 20x507
-  RenderTableRow {TR} at (0,2) size 20x507
-    RenderTableCell {TD} at (2,2) size 16x507 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x516
+  RenderBlock {HTML} at (0,0) size 800x38
+    RenderBody {BODY} at (8,8) size 784x22
+      RenderTable {TABLE} at (0,0) size 22x22 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 20x20
+layer at (9,11) size 20x16
+  RenderTableRow {TR} at (0,2) size 20x16
+    RenderTableCell {TD} at (2,2) size 16x16 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
       RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
         RenderBlock {DIV} at (1,1) size 702x502 [border: (1px solid #FF0000)]
           RenderText {#text} at (1,1) size 60x18
index 3120eef..ae56a7d 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell-expected.png differ
index 8235120..d9b436c 100644 (file)
@@ -1,20 +1,20 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x589
-  RenderBlock {HTML} at (0,0) size 800x589
-    RenderBody {BODY} at (8,8) size 784x573
-      RenderTable {TABLE} at (0,0) size 200x573 [border: (1px outset #808080)]
+layer at (0,0) size 800x549
+  RenderBlock {HTML} at (0,0) size 800x397
+    RenderBody {BODY} at (8,8) size 784x381
+      RenderTable {TABLE} at (0,0) size 200x381 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,207) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,126) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,207) size 198x173
+          RenderTableRow {TR} at (0,30) size 198x113
+            RenderTableCell {TD} at (30,30) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 44x111
                 text run at (1,1) width 43: "foo"
                 text run at (1,38) width 41: "bar"
                 text run at (1,75) width 44: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,30) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index b28086f..50aeabf 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_cell_sibling-expected.png differ
index f4e7a96..96651d6 100644 (file)
@@ -1,19 +1,19 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x589
-  RenderBlock {HTML} at (0,0) size 800x589
-    RenderBody {BODY} at (8,8) size 784x573
-      RenderTable {TABLE} at (0,0) size 200x573 [border: (1px outset #808080)]
+layer at (0,0) size 800x597
+  RenderBlock {HTML} at (0,0) size 800x386
+    RenderBody {BODY} at (8,8) size 784x370
+      RenderTable {TABLE} at (0,0) size 200x370 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,207) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,166) size 54x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,207) size 198x162
+          RenderTableRow {TR} at (0,30) size 198x102
+            RenderTableCell {TD} at (30,65) size 54x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 38x30
                 text run at (1,1) width 38: "foo bar"
                 text run at (1,16) width 19: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,78) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index 111577a..7d8bfeb 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row-expected.png differ
index ce69281..01b7ad8 100644 (file)
@@ -1,19 +1,19 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x589
-  RenderBlock {HTML} at (0,0) size 800x589
-    RenderBody {BODY} at (8,8) size 784x573
-      RenderTable {TABLE} at (0,0) size 200x573 [border: (1px outset #808080)]
+layer at (0,0) size 800x597
+  RenderBlock {HTML} at (0,0) size 800x386
+    RenderBody {BODY} at (8,8) size 784x370
+      RenderTable {TABLE} at (0,0) size 200x370 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,207) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,166) size 54x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,207) size 198x162
+          RenderTableRow {TR} at (0,30) size 198x102
+            RenderTableCell {TD} at (30,65) size 54x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 38x30
                 text run at (1,1) width 38: "foo bar"
                 text run at (1,16) width 19: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,78) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 7x15
index fa3c150..9837d95 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_row_sibling-expected.png differ
index 0a39ee5..9792ed8 100644 (file)
@@ -1,13 +1,13 @@
-layer at (0,0) size 785x666
+layer at (0,0) size 785x685
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x666
-  RenderBlock {HTML} at (0,0) size 785x666
-    RenderBody {BODY} at (8,8) size 769x650
-      RenderTable {TABLE} at (0,0) size 200x650 [border: (1px outset #808080)]
+layer at (0,0) size 785x685
+  RenderBlock {HTML} at (0,0) size 785x474
+    RenderBody {BODY} at (8,8) size 769x458
+      RenderTable {TABLE} at (0,0) size 200x458 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,207) size 198x442
+        RenderTableSection {TBODY} at (1,207) size 198x250
           RenderTableRow {TR} at (0,30) size 198x47
             RenderTableCell {TD} at (30,45) size 54x17 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 18x15
@@ -21,13 +21,13 @@ layer at (0,0) size 785x666
               RenderBR {BR} at (20,16) size 0x15
               RenderText {#text} at (1,31) size 19x15
                 text run at (1,31) width 19: "zap"
-          RenderTableRow {TR} at (0,107) size 198x305
-            RenderTableCell {TD} at (30,203) size 54x113 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          RenderTableRow {TR} at (0,107) size 198x113
+            RenderTableCell {TD} at (30,107) size 54x113 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 44x111
                 text run at (1,1) width 43: "foo"
                 text run at (1,38) width 41: "bar"
                 text run at (1,75) width 44: "baz"
-            RenderTableCell {TD} at (114,107) size 54x305 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,166) size 54x54 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index 79b1d97..5c4738c 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table-expected.png differ
index a1fdbc7..fe68eea 100644 (file)
@@ -1,19 +1,19 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x366
-  RenderBlock {HTML} at (0,0) size 800x366
-    RenderBody {BODY} at (8,8) size 784x350
-      RenderTable {TABLE} at (0,0) size 200x350 [border: (1px outset #808080)]
+layer at (0,0) size 800x404
+  RenderBlock {HTML} at (0,0) size 800x163
+    RenderBody {BODY} at (8,8) size 784x147
+      RenderTable {TABLE} at (0,0) size 200x147 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x43 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,44) size 198x305
-          RenderTableRow {TR} at (0,0) size 198x305
-            RenderTableCell {TD} at (0,114) size 144x76 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,44) size 198x102
+          RenderTableRow {TR} at (0,0) size 198x102
+            RenderTableCell {TD} at (0,13) size 144x76 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 92x74
                 text run at (1,1) width 92: "foo bar"
                 text run at (1,38) width 44: "baz"
-            RenderTableCell {TD} at (144,0) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (144,48) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index 0a7a6ac..463a0e6 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_table_caption-expected.png differ
index 7d5d540..6991edc 100644 (file)
@@ -1,20 +1,20 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x426
-  RenderBlock {HTML} at (0,0) size 800x426
-    RenderBody {BODY} at (8,8) size 784x410
-      RenderTable {TABLE} at (0,0) size 200x410 [border: (1px outset #808080)]
+layer at (0,0) size 800x445
+  RenderBlock {HTML} at (0,0) size 800x234
+    RenderBody {BODY} at (8,8) size 784x218
+      RenderTable {TABLE} at (0,0) size 200x218 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x43 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,44) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,126) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,44) size 198x173
+          RenderTableRow {TR} at (0,30) size 198x113
+            RenderTableCell {TD} at (30,30) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 44x111
                 text run at (1,1) width 43: "foo"
                 text run at (1,38) width 41: "bar"
                 text run at (1,75) width 44: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,89) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index 2fc7577..32aea68 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody-expected.png differ
index f1aba36..a93747e 100644 (file)
@@ -1,19 +1,19 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x589
-  RenderBlock {HTML} at (0,0) size 800x589
-    RenderBody {BODY} at (8,8) size 784x573
-      RenderTable {TABLE} at (0,0) size 200x573 [border: (1px outset #808080)]
+layer at (0,0) size 800x597
+  RenderBlock {HTML} at (0,0) size 800x386
+    RenderBody {BODY} at (8,8) size 784x370
+      RenderTable {TABLE} at (0,0) size 200x370 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
-        RenderTableSection {TBODY} at (1,207) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,163) size 54x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,207) size 198x162
+          RenderTableRow {TR} at (0,30) size 198x102
+            RenderTableCell {TD} at (30,62) size 54x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 45x36
                 text run at (1,1) width 45: "foo bar"
                 text run at (1,19) width 22: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,78) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index 0d942f4..d24c7f8 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_style_reflow_tbody_sibling-expected.png differ
index 123433b..66a705a 100644 (file)
@@ -1,9 +1,9 @@
-layer at (0,0) size 785x705
+layer at (0,0) size 785x724
   RenderView at (0,0) size 785x600
-layer at (0,0) size 785x705
-  RenderBlock {HTML} at (0,0) size 785x705
-    RenderBody {BODY} at (8,8) size 769x689
-      RenderTable {TABLE} at (0,0) size 200x689 [border: (1px outset #808080)]
+layer at (0,0) size 785x724
+  RenderBlock {HTML} at (0,0) size 785x513
+    RenderBody {BODY} at (8,8) size 769x497
+      RenderTable {TABLE} at (0,0) size 200x497 [border: (1px outset #808080)]
         RenderBlock {CAPTION} at (0,0) size 198x206 [border: (3px solid #FFA500)]
           RenderText {#text} at (77,3) size 44x37
             text run at (77,3) width 44: "cap"
@@ -21,14 +21,14 @@ layer at (0,0) size 785x705
               RenderBR {BR} at (23,19) size 0x18
               RenderText {#text} at (1,37) size 22x18
                 text run at (1,37) width 22: "zap"
-        RenderTableSection {TBODY} at (1,323) size 198x365
-          RenderTableRow {TR} at (0,30) size 198x305
-            RenderTableCell {TD} at (30,126) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+        RenderTableSection {TBODY} at (1,323) size 198x173
+          RenderTableRow {TR} at (0,30) size 198x113
+            RenderTableCell {TD} at (30,30) size 54x113 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (1,1) size 44x111
                 text run at (1,1) width 43: "foo"
                 text run at (1,38) width 41: "bar"
                 text run at (1,75) width 44: "baz"
-            RenderTableCell {TD} at (114,30) size 54x305 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (114,89) size 54x54 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (1,1) size 52x52 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 402x302 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 16x37
index 80ed866..a989532 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.png differ
index 130fe7a..ce8aef4 100644 (file)
@@ -1,15 +1,15 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x429
-  RenderBlock {HTML} at (0,0) size 800x429
-    RenderBody {BODY} at (8,8) size 784x413
-      RenderTable {TABLE} at (0,0) size 200x413 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 198x411
-          RenderTableRow {TR} at (0,2) size 198x407
-            RenderTableCell {TD} at (2,194) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x460
+  RenderBlock {HTML} at (0,0) size 800x126
+    RenderBody {BODY} at (8,8) size 784x110
+      RenderTable {TABLE} at (0,0) size 200x110 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 198x108
+          RenderTableRow {TR} at (0,2) size 198x104
+            RenderTableCell {TD} at (2,43) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 21x18
                 text run at (2,2) width 21: "foo"
-            RenderTableCell {TD} at (121,2) size 75x407 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (121,46) size 75x16 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (61,2) size 12x12 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (-291,1) size 302x402 [border: (1px solid #FF0000)]
                   RenderText {#text} at (293,1) size 8x18
index a1696b5..eb485a7 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_bottom-expected.png differ
index 1254657..134ff28 100644 (file)
@@ -1,15 +1,15 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x429
-  RenderBlock {HTML} at (0,0) size 800x429
-    RenderBody {BODY} at (8,8) size 784x413
-      RenderTable {TABLE} at (0,0) size 200x413 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 198x411
-          RenderTableRow {TR} at (0,2) size 198x407
-            RenderTableCell {TD} at (2,194) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x504
+  RenderBlock {HTML} at (0,0) size 800x126
+    RenderBody {BODY} at (8,8) size 784x110
+      RenderTable {TABLE} at (0,0) size 200x110 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 198x108
+          RenderTableRow {TR} at (0,2) size 198x104
+            RenderTableCell {TD} at (2,43) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 21x18
                 text run at (2,2) width 21: "foo"
-            RenderTableCell {TD} at (121,2) size 75x407 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (121,90) size 75x16 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 302x402 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index a1696b5..03909fb 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_middle-expected.png differ
index 1254657..94259e6 100644 (file)
@@ -1,15 +1,15 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x429
-  RenderBlock {HTML} at (0,0) size 800x429
-    RenderBody {BODY} at (8,8) size 784x413
-      RenderTable {TABLE} at (0,0) size 200x413 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 198x411
-          RenderTableRow {TR} at (0,2) size 198x407
-            RenderTableCell {TD} at (2,194) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x460
+  RenderBlock {HTML} at (0,0) size 800x126
+    RenderBody {BODY} at (8,8) size 784x110
+      RenderTable {TABLE} at (0,0) size 200x110 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 198x108
+          RenderTableRow {TR} at (0,2) size 198x104
+            RenderTableCell {TD} at (2,43) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 21x18
                 text run at (2,2) width 21: "foo"
-            RenderTableCell {TD} at (121,2) size 75x407 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (121,46) size 75x16 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 302x402 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index a1696b5..36b8022 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png and b/LayoutTests/tables/mozilla_expected_failures/marvin/table_overflow_td_valign_top-expected.png differ
index 1254657..407f9aa 100644 (file)
@@ -1,15 +1,15 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x429
-  RenderBlock {HTML} at (0,0) size 800x429
-    RenderBody {BODY} at (8,8) size 784x413
-      RenderTable {TABLE} at (0,0) size 200x413 [border: (1px outset #808080)]
-        RenderTableSection {TBODY} at (1,1) size 198x411
-          RenderTableRow {TR} at (0,2) size 198x407
-            RenderTableCell {TD} at (2,194) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+layer at (0,0) size 800x416
+  RenderBlock {HTML} at (0,0) size 800x126
+    RenderBody {BODY} at (8,8) size 784x110
+      RenderTable {TABLE} at (0,0) size 200x110 [border: (1px outset #808080)]
+        RenderTableSection {TBODY} at (1,1) size 198x108
+          RenderTableRow {TR} at (0,2) size 198x104
+            RenderTableCell {TD} at (2,43) size 117x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderText {#text} at (2,2) size 21x18
                 text run at (2,2) width 21: "foo"
-            RenderTableCell {TD} at (121,2) size 75x407 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (121,2) size 75x16 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderBlock {DIV} at (2,2) size 12x12 [border: (1px solid #008000)]
                 RenderBlock {DIV} at (1,1) size 302x402 [border: (1px solid #FF0000)]
                   RenderText {#text} at (1,1) size 8x18
index a642545..501b336 100644 (file)
@@ -1,3 +1,87 @@
+2007-02-18  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Hyatt.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=12123
+          REGRESSION: Incomplete repaint of floats' overflows
+
+        Tests: fast/repaint/float-overflow.html
+               fast/repaint/float-overflow-right.html
+               fast/repaint/table-cell-vertical-overflow.html
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=10116
+          REGRESSION: Menu item drawn 2 pixels short on WWDC 2006 Attendee Site
+
+        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): Made non-virtual and 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.h: Removed the override of overflowHeight() since now tables can have
+        vertical overflow.
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::paint): Made sure that overflow is repainted.
+        * rendering/RenderTableCell.h:
+        (WebCore::RenderTableCell::expandsToEncloseOverhangingFloats): Removed.
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::RenderTableSection):
+        (WebCore::RenderTableSection::layoutRows): Factor in vertical overflow from cells.
+        (WebCore::RenderTableSection::paint):
+        * rendering/RenderTableSection.h:
+        (WebCore::RenderTableSection::overflowHeight):
+        (WebCore::RenderTableSection::overflowTop):
+
 2007-02-18  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by NOBODY (Buildfix).
index 9171774..be83d47 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
-                       compatibilityVersion = "Xcode 2.4";
                        hasScannedForEncodings = 1;
                        knownRegions = (
                                English,
                        productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
                        projectDirPath = "";
                        projectRoot = "";
-                       shouldCheckCompatibility = 1;
                        targets = (
                                93F198A508245E59001E9ABC /* WebCore */,
                                DD041FBE09D9DDBE0010AF2A /* Derived Sources */,
index 012b7f1..a5dbe19 100644 (file)
@@ -299,8 +299,8 @@ int InlineFlowBox::placeBoxesHorizontally(int x, int& leftPosition, int& rightPo
             } else if (!curr->object()->isCompact() && (!curr->object()->isListMarker() || static_cast<RenderListMarker*>(curr->object())->isInside())) {
                 x += curr->object()->marginLeft();
                 curr->setXPos(x);
-                leftPosition = min(x, leftPosition);
-                rightPosition = max(x + curr->width(), rightPosition);
+                leftPosition = min(x + curr->object()->overflowLeft(false), leftPosition);
+                rightPosition = max(x + curr->object()->overflowWidth(false), rightPosition);
                 x += curr->width() + curr->object()->marginRight();
             }
         }
index 4de65cb..21ba7a7 100644 (file)
@@ -466,12 +466,11 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
         return;
     }
     
-    IntRect oldBounds, oldFullBounds;
+    IntRect oldBounds;
     bool checkForRepaint = checkForRepaintDuringLayout();
     if (checkForRepaint) {
-        getAbsoluteRepaintRectIncludingFloats(oldBounds, oldFullBounds);
+        oldBounds = getAbsoluteRepaintRect();
         oldBounds.move(view()->layoutDelta());
-        oldFullBounds.move(view()->layoutDelta());
     }
 
     int oldWidth = m_width;
@@ -555,10 +554,6 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
     if (previousHeight != m_height)
         relayoutChildren = true;
 
-    // Table cells need to grow to accommodate blocks that have overflowed content.
-    if (m_overflowHeight > m_height && !hasOverflowClip() && expandsToEncloseOverflow())
-        m_height = m_overflowHeight + borderBottom() + paddingBottom();
-
     // Some classes of objects (floats and fieldsets with no specified heights and table cells) expand to encompass
     // overhanging floats.
     if (hasOverhangingFloats() && expandsToEncloseOverhangingFloats()) {
@@ -566,6 +561,9 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
         m_height += borderBottom() + paddingBottom();
     }
 
+    if ((isTableCell() || isInline() || isFloatingOrPositioned() || isRoot()) && !hasOverflowClip() && !hasControlClip())
+        addVisualOverflow(floatRect());
+
     layoutPositionedObjects(relayoutChildren || isRoot());
 
     positionListMarker();
@@ -583,7 +581,7 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
     // Repaint with our new bounds if they are different from our old bounds.
     bool didFullRepaint = false;
     if (checkForRepaint)
-        didFullRepaint = repaintAfterLayoutIfNeeded(oldBounds, oldFullBounds);
+        didFullRepaint = repaintAfterLayoutIfNeeded(oldBounds);
     if (!didFullRepaint && !repaintRect.isEmpty()) {
         // FIXME: Deal with multiple column repainting.  We have to split the repaint
         // rect up into multiple rects if it spans columns.
@@ -1154,24 +1152,19 @@ void RenderBlock::layoutBlockChildren(bool relayoutChildren)
         // Now place the child in the correct horizontal position
         determineHorizontalPosition(child);
 
-        // Update our top overflow in case the child spills out the top of the block.
-        m_overflowTop = min(m_overflowTop, child->yPos() + child->overflowTop(false));
-        
         // Update our height now that the child has been placed in the correct position.
         m_height += child->height();
         if (child->style()->marginBottomCollapse() == MSEPARATE) {
             m_height += child->marginBottom();
             marginInfo.clearMargin();
         }
-        int overflowDelta = child->overflowHeight(false) - child->height();
-        if (m_height + overflowDelta > m_overflowHeight)
-            m_overflowHeight = m_height + overflowDelta;
-
         // If the child has overhanging floats that intrude into following siblings (or possibly out
         // of this block), then the parent gets notified of the floats now.
         addOverhangingFloats(static_cast<RenderBlock *>(child), -child->xPos(), -child->yPos());
 
-        // See if this child has made our overflow need to grow.
+        // Update our overflow in case the child spills out the block.
+        m_overflowTop = min(m_overflowTop, child->yPos() + child->overflowTop(false));
+        m_overflowHeight = max(m_overflowHeight, m_height + child->overflowHeight(false) - child->height());
         m_overflowWidth = max(child->xPos() + child->overflowWidth(false), m_overflowWidth);
         m_overflowLeft = min(child->xPos() + child->overflowLeft(false), m_overflowLeft);
         
@@ -1234,29 +1227,6 @@ void RenderBlock::markPositionedObjectsForLayout()
     }
 }
 
-void RenderBlock::getAbsoluteRepaintRectIncludingFloats(IntRect& bounds, IntRect& fullBounds)
-{
-    bounds = fullBounds = getAbsoluteRepaintRect();
-
-    // Include any overhanging floats (if we know we're the one to paint them).
-    // We null-check m_floatingObjects here to catch any cases where m_height ends up negative
-    // for some reason.  I think I've caught all those cases, but this way we stay robust and don't
-    // crash.
-    if (hasOverhangingFloats() && m_floatingObjects) {
-        FloatingObject* r;
-        DeprecatedPtrListIterator<FloatingObject> it(*m_floatingObjects);
-        for ( ; (r = it.current()); ++it) {
-            // Only repaint the object if our noPaint flag isn't set and if it isn't in
-            // its own layer.
-            if (!r->noPaint && !r->node->layer()) {
-                IntRect childRect, childFullRect;
-                r->node->getAbsoluteRepaintRectIncludingFloats(childRect, childFullRect);
-                fullBounds.unite(childFullRect);
-            }
-        }
-    }
-}
-
 void RenderBlock::repaintOverhangingFloats(bool paintAllDescendants)
 {
     // Repaint any overhanging floats (if we know we're the one to paint them).
@@ -1308,17 +1278,8 @@ void RenderBlock::paint(PaintInfo& paintInfo, int tx, int ty)
         IntRect overflowBox = overflowRect(false);
         overflowBox.inflate(maximalOutlineSize(paintInfo.phase));
         overflowBox.move(tx, ty);
-        bool intersectsOverflowBox = overflowBox.intersects(paintInfo.rect);
-        if (!intersectsOverflowBox) {
-            // Check floats next.
-            if (paintInfo.phase != PaintPhaseFloat && paintInfo.phase != PaintPhaseSelection)
-                return;
-            IntRect floatBox = floatRect();
-            floatBox.inflate(maximalOutlineSize(paintInfo.phase));
-            floatBox.move(tx, ty);
-            if (!floatBox.intersects(paintInfo.rect))
-                return;
-        }
+        if (!overflowBox.intersects(paintInfo.rect))
+            return;
     }
 
     // Push a clip.
@@ -2249,14 +2210,14 @@ RenderBlock::floatBottom() const
 
 IntRect RenderBlock::floatRect() const
 {
-    IntRect result(borderBox());
+    IntRect result;
     if (!m_floatingObjects || hasOverflowClip())
         return result;
     FloatingObject* r;
     DeprecatedPtrListIterator<FloatingObject> it(*m_floatingObjects);
     for (; (r = it.current()); ++it) {
         if (!r->noPaint && !r->node->layer()) {
-            IntRect childRect = unionRect(r->node->floatRect(), r->node->overflowRect());
+            IntRect childRect = r->node->overflowRect(false);
             childRect.move(r->left + r->node->marginLeft(), r->startY + r->node->marginTop());
             result.unite(childRect);
         }
@@ -2490,31 +2451,17 @@ RenderBlock::clearFloats()
 void RenderBlock::addOverhangingFloats(RenderBlock* child, int xoff, int yoff)
 {
     // Prevent floats from being added to the canvas by the root element, e.g., <html>.
-    if (child->hasOverflowClip() || !child->hasOverhangingFloats() || child->isRoot())
-        return;
-    
-    // We think that we must be in a bad state if child->m_floatingObjects is nil at this point, 
-    // so we assert on Debug builds and nil-check Release builds.
-    ASSERT(child->m_floatingObjects);
-    if (!child->m_floatingObjects)
+    if (child->hasOverflowClip() || !child->containsFloats() || child->isRoot())
         return;
 
+    // Floats that will remain the child's responsiblity to paint should factor into its
+    // visual overflow.
+    IntRect floatsOverflowRect;
     DeprecatedPtrListIterator<FloatingObject> it(*child->m_floatingObjects);
-    for (FloatingObject *r; (r = it.current()); ++it) {
+    for (FloatingObjectr; (r = it.current()); ++it) {
         if (child->yPos() + r->endY > height()) {
-            // The object may already be in our list. Check for it up front to avoid
-            // creating duplicate entries.
-            FloatingObject* f = 0;
-            if (m_floatingObjects) {
-                DeprecatedPtrListIterator<FloatingObject> it(*m_floatingObjects);
-                while ((f = it.current())) {
-                    if (f->node == r->node) break;
-                    ++it;
-                }
-            }
-
             // If the object is not in the list, we add it now.
-            if (!f) {
+            if (!containsFloat(r->node)) {
                 FloatingObject *floatingObj = new FloatingObject(r->type());
                 floatingObj->startY = r->startY - yoff;
                 floatingObj->endY = r->endY - yoff;
@@ -2539,7 +2486,13 @@ void RenderBlock::addOverhangingFloats(RenderBlock* child, int xoff, int yoff)
                 m_floatingObjects->append(floatingObj);
             }
         }
+        if (!r->noPaint && !r->node->layer()) {
+            IntRect floatOverflowRect = r->node->overflowRect(false);
+            floatOverflowRect.move(r->left + r->node->marginLeft(), r->startY + r->node->marginTop());
+            floatsOverflowRect.unite(floatOverflowRect);
+        }
     }
+    child->addVisualOverflow(floatsOverflowRect);
 }
 
 void RenderBlock::addIntrudingFloats(RenderBlock* prev, int xoff, int yoff)
@@ -2661,6 +2614,16 @@ int RenderBlock::getClearDelta(RenderObject *child)
     return result;
 }
 
+void RenderBlock::addVisualOverflow(const IntRect& r)
+{
+    if (r.isEmpty())
+        return;
+    m_overflowLeft = min(m_overflowLeft, r.x());
+    m_overflowWidth = max(m_overflowWidth, r.right());
+    m_overflowTop = min(m_overflowTop, r.y());
+    m_overflowHeight = max(m_overflowHeight, r.bottom());
+}
+
 bool RenderBlock::isPointInScrollbar(HitTestResult& result, int _x, int _y, int _tx, int _ty)
 {
     if (!scrollsOverflow())
@@ -2702,16 +2665,8 @@ bool RenderBlock::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
         // Check if we need to do anything at all.
         IntRect overflowBox = overflowRect(false);
         overflowBox.move(tx, ty);
-        bool insideOverflowBox = overflowBox.contains(_x, _y);
-        if (!insideOverflowBox) {
-            // Check floats next.
-            if (hitTestAction != HitTestFloat)
-                return false;
-            IntRect floatBox = floatRect();
-            floatBox.move(tx, ty);
-            if (!floatBox.contains(_x, _y))
-                return false;
-        }
+        if (!overflowBox.contains(_x, _y))
+            return false;
     }
 
     if (isPointInScrollbar(result, _x, _y, tx, ty)) {
index 5ee0d5c..0c09e5c 100644 (file)
@@ -69,6 +69,8 @@ public:
     virtual void setOverflowHeight(int h) { m_overflowHeight = h; }
     virtual void setOverflowWidth(int w) { m_overflowWidth = w; }
 
+    void addVisualOverflow(const IntRect&);
+
     virtual bool isSelfCollapsingBlock() const;
     virtual bool isTopMarginQuirk() const { return m_topMarginQuirk; }
     virtual bool isBottomMarginQuirk() const { return m_bottomMarginQuirk; }
@@ -101,7 +103,6 @@ public:
 
     virtual void repaintObjectsBeforeLayout();
     virtual void repaintOverhangingFloats(bool paintAllDescendants);
-    virtual void getAbsoluteRepaintRectIncludingFloats(IntRect& bounds, IntRect& fullBounds);
 
     virtual void setStyle(RenderStyle*);
 
@@ -178,7 +179,7 @@ public:
     int floatBottom() const;
     inline int leftBottom();
     inline int rightBottom();
-    virtual IntRect floatRect() const;
+    IntRect floatRect() const;
 
     virtual int lineWidth(int y) const;
     virtual int lowestPosition(bool includeOverflowInterior = true, bool includeSelf = true) const;
@@ -448,14 +449,9 @@ protected:
     int m_maxBottomPosMargin;
     int m_maxBottomNegMargin;
 
-    // How much content overflows out of our block vertically or horizontally (all we support
-    // for now is spillage out of the bottom and the right, which are the common cases).
-    // FIXME: Generalize to work with top and left as well.
+    // How much content overflows out of our block vertically or horizontally.
     int m_overflowHeight;
     int m_overflowWidth;
-
-    // Left and top overflow.  Does not affect scrolling dimensions, but we do at least use it
-    // when dirty rect checking and hit testing.
     int m_overflowLeft;
     int m_overflowTop;
 
index e3c6983..4487cf5 100644 (file)
@@ -330,7 +330,7 @@ void RenderFlexibleBox::layoutBlock(bool relayoutChildren)
 
     // Repaint with our new bounds if they are different from our old bounds.
     if (checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
     
     setNeedsLayout(false);
 }
@@ -488,6 +488,10 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             }
 
             placeChild(child, xPos, childY);
+
+            if (child->isRenderBlock())
+                static_cast<RenderBlock*>(child)->addVisualOverflow(static_cast<RenderBlock*>(child)->floatRect());
+
             m_overflowHeight = max(m_overflowHeight, childY + child->overflowHeight(false));
             m_overflowTop = min(m_overflowTop, child->yPos() + child->overflowTop(false));
             
@@ -866,6 +870,9 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
             placeChild(child, childX, m_height);
             m_height += child->height() + child->marginBottom();
     
+            if (child->isRenderBlock())
+                static_cast<RenderBlock*>(child)->addVisualOverflow(static_cast<RenderBlock*>(child)->floatRect());
+
             // See if this child has made our overflow need to grow.
             m_overflowWidth = max(child->xPos() + child->overflowWidth(false), m_overflowWidth);
             m_overflowLeft = min(child->xPos() + child->overflowLeft(false), m_overflowLeft);
index f2a262d..35345bb 100644 (file)
@@ -97,7 +97,7 @@ void RenderForeignObject::layout()
     m_absoluteBounds = getAbsoluteRepaintRect();
 
     if (checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
 
     setNeedsLayout(false);
 }
index abb905a..61be963 100644 (file)
@@ -90,7 +90,7 @@ void RenderHTMLCanvas::layout()
     calcWidth();
     calcHeight();
     if (checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
 
     setNeedsLayout(false);
 }
index f3cae6b..05da672 100644 (file)
@@ -316,7 +316,7 @@ void RenderImage::layout()
     calcHeight();
 
     if (checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
     
     setNeedsLayout(false);
 }
index 15bdbb3..9386336 100644 (file)
@@ -199,28 +199,25 @@ void RenderLayer::updateLayerPositions(bool doFullRepaint, bool checkForRepaint)
     if (m_hasVisibleContent) {
         int x, y;
         m_object->absolutePosition(x, y);
-        IntRect newRect, newFullRect;
-        m_object->getAbsoluteRepaintRectIncludingFloats(newRect, newFullRect);
+        IntRect newRect = m_object->getAbsoluteRepaintRect();
         if (checkForRepaint) {
-            RenderView *c = m_object->view();
+            RenderViewc = m_object->view();
             ASSERT(c);
             if (c && !c->printing()) {
                 bool didMove = x != m_repaintX || y != m_repaintY;
                 if (!didMove && !m_repaintOverflowOnResize)
-                    m_object->repaintAfterLayoutIfNeeded(m_repaintRect, m_fullRepaintRect);
+                    m_object->repaintAfterLayoutIfNeeded(m_repaintRect);
                 else if (didMove || newRect != m_repaintRect) {
-                    c->repaintViewRectangle(m_fullRepaintRect);
-                    c->repaintViewRectangle(newFullRect);
+                    c->repaintViewRectangle(m_repaintRect);
+                    c->repaintViewRectangle(newRect);
                 }
             }
         }
         m_repaintRect = newRect;
-        m_fullRepaintRect = newFullRect;
         m_repaintX = x;
         m_repaintY = y;
     } else {
         m_repaintRect = IntRect();
-        m_fullRepaintRect = IntRect();
     }
     
     for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
@@ -1841,9 +1838,6 @@ IntRect RenderLayer::absoluteBoundingBox() const
         IntRect overflowRect = renderer()->overflowRect(false);
         if (bbox != overflowRect)
             result.unite(overflowRect);
-        IntRect floatRect = renderer()->floatRect();
-        if (bbox != floatRect)
-            result.unite(floatRect);
         
         // We have to adjust the x/y of this result so that it is in the coordinate space of the layer.
         // We also have to add in borderTopExtra here, since borderBox(), in order to play well with methods like
index 6b4f92c..e4429ef 100644 (file)
@@ -387,7 +387,6 @@ protected:
     RenderLayer* m_last;
 
     IntRect m_repaintRect; // Cached repaint rects. Used by layout.
-    IntRect m_fullRepaintRect;
     int m_repaintX;
     int m_repaintY;
 
index bce8e17..ff51e2f 100644 (file)
@@ -1734,22 +1734,21 @@ void RenderObject::repaintRectangle(const IntRect& r, bool immediate)
     view->repaintViewRectangle(absRect, immediate);
 }
 
-bool RenderObject::repaintAfterLayoutIfNeeded(const IntRect& oldBounds, const IntRect& oldFullBounds)
+bool RenderObject::repaintAfterLayoutIfNeeded(const IntRect& oldBounds)
 {
     RenderView* v = view();
     if (v->printing())
         return false; // Don't repaint if we're printing.
 
-    IntRect newBounds, newFullBounds;
-    getAbsoluteRepaintRectIncludingFloats(newBounds, newFullBounds);
+    IntRect newBounds = getAbsoluteRepaintRect();
     if (newBounds == oldBounds && !selfNeedsLayout())
         return false;
 
     bool fullRepaint = selfNeedsLayout() || newBounds.location() != oldBounds.location() || mustRepaintBackgroundOrBorder();
     if (fullRepaint) {
-        v->repaintViewRectangle(oldFullBounds);
+        v->repaintViewRectangle(oldBounds);
         if (newBounds != oldBounds)
-            v->repaintViewRectangle(newFullBounds);
+            v->repaintViewRectangle(newBounds);
         return true;
     }
 
@@ -1831,11 +1830,6 @@ IntRect RenderObject::getAbsoluteRepaintRect()
     return IntRect();
 }
 
-void RenderObject::getAbsoluteRepaintRectIncludingFloats(IntRect& bounds, IntRect& fullBounds)
-{
-    bounds = fullBounds = getAbsoluteRepaintRect();
-}
-
 void RenderObject::computeAbsoluteRepaintRect(IntRect& r, bool f)
 {
     if (parent())
index a8b8a0f..4bff22b 100644 (file)
@@ -717,7 +717,7 @@ public:
     void repaintRectangle(const IntRect&, bool immediate = false);
 
     // Repaint only if our old bounds and new bounds are different.
-    bool repaintAfterLayoutIfNeeded(const IntRect& oldBounds, const IntRect& oldFullBounds);
+    bool repaintAfterLayoutIfNeeded(const IntRect& oldBounds);
 
     // Repaint only if the object moved.
     virtual void repaintDuringLayoutIfMoved(const IntRect& rect);
@@ -736,8 +736,6 @@ public:
 
     IntRect getAbsoluteRepaintRectWithOutline(int ow);
 
-    virtual void getAbsoluteRepaintRectIncludingFloats(IntRect& bounds, IntRect& boundsWithChildren);
-
     // Given a rect in the object's coordinate space, this method converts the rectangle to the view's
     // coordinate space.
     virtual void computeAbsoluteRepaintRect(IntRect&, bool fixed = false);
@@ -749,9 +747,6 @@ public:
     virtual bool containsFloat(RenderObject*) { return false; }
     virtual bool hasOverhangingFloats() { return false; }
     virtual bool expandsToEncloseOverhangingFloats() const { return isFloating() && style()->height().isAuto(); }
-    virtual IntRect floatRect() const { return borderBox(); }
-
-    virtual bool expandsToEncloseOverflow() const { return false; }
 
     virtual void removePositionedObjects(RenderBlock*) { }
 
index 516bfb5..e9a9bdc 100644 (file)
@@ -131,7 +131,7 @@ void RenderPath::layout()
     setHeight(m_absoluteBounds.height());
 
     if (selfNeedsLayout() && checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
 
     setNeedsLayout(false);
 }
index 4fe8f05..1a05e15 100644 (file)
@@ -120,7 +120,7 @@ void RenderSVGContainer::layout()
     m_absoluteBounds = getAbsoluteRepaintRect();
 
     if (selfNeedsLayout() && checkForRepaint)
-        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repaintAfterLayoutIfNeeded(oldBounds);
 
     setNeedsLayout(false);
 }
index cee6111..35c5e88 100644 (file)
@@ -77,7 +77,7 @@ void RenderSVGText::layout()
 
     bool repainted = false;
     if (checkForRepaint)
-        repainted = repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
+        repainted = repaintAfterLayoutIfNeeded(oldBounds);
     
     setNeedsLayout(false);
 }
index 829b583..8b2110e 100644 (file)
@@ -276,12 +276,10 @@ void RenderTable::layout()
     }
 
     IntRect oldBounds;
-    IntRect oldFullBounds;
     bool checkForRepaint = checkForRepaintDuringLayout();
     if (checkForRepaint) {
-        getAbsoluteRepaintRectIncludingFloats(oldBounds, oldFullBounds);
+        oldBounds = getAbsoluteRepaintRect();
         oldBounds.move(view()->layoutDelta());
-        oldFullBounds.move(view()->layoutDelta());
     }
     
     m_height = 0;
@@ -389,13 +387,15 @@ void RenderTable::layout()
     while (section) {
         if (!sectionMoved && section->yPos() != m_height) {
             sectionMoved = true;
-            movedSectionTop = min(m_height, section->yPos());
+            movedSectionTop = min(m_height, section->yPos()) + section->overflowTop(false);
         }
         section->setPos(bl, m_height);
 
         m_height += section->height();
         m_overflowLeft = min(m_overflowLeft, section->xPos() + section->overflowLeft(false));
         m_overflowWidth = max(m_overflowWidth, section->xPos() + section->overflowWidth(false));
+        m_overflowTop = min(m_overflowTop, section->yPos() + section->overflowTop(false));
+        m_overflowHeight = max(m_overflowHeight, section->yPos() + section->overflowHeight(false));
         section = sectionBelow(section);
     }
 
@@ -425,7 +425,7 @@ void RenderTable::layout()
     bool didFullRepaint = true;
     // Repaint with our new bounds if they are different from our old bounds.
     if (checkForRepaint)
-        didFullRepaint = repaintAfterLayoutIfNeeded(oldBounds, oldFullBounds);
+        didFullRepaint = repaintAfterLayoutIfNeeded(oldBounds);
     if (!didFullRepaint && sectionMoved) {
         IntRect repaintRect(m_overflowLeft, movedSectionTop, m_overflowWidth - m_overflowLeft, m_overflowHeight - movedSectionTop);
         if (FrameView* frameView = view()->frameView())
@@ -451,9 +451,9 @@ void RenderTable::paint(PaintInfo& paintInfo, int tx, int ty)
     PaintPhase paintPhase = paintInfo.phase;
 
     int os = 2 * maximalOutlineSize(paintPhase);
-    if (ty + overflowTop() >= paintInfo.rect.bottom() + os || ty + overflowHeight() <= paintInfo.rect.y() - os)
+    if (ty + overflowTop(false) >= paintInfo.rect.bottom() + os || ty + overflowHeight(false) <= paintInfo.rect.y() - os)
         return;
-    if (tx + overflowLeft() >= paintInfo.rect.right() + os || tx + overflowWidth() <= paintInfo.rect.x() - os)
+    if (tx + overflowLeft(false) >= paintInfo.rect.right() + os || tx + overflowWidth(false) <= paintInfo.rect.x() - os)
         return;
 
     if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChildBlockBackground) && hasBoxDecorations() && style()->visibility() == VISIBLE)
index 19a7b9c..e28532e 100644 (file)
@@ -98,7 +98,6 @@ public:
     void recalcHorizontalBorders();
 
     // overrides
-    virtual int overflowHeight(bool includeInterior = true) const { return height(); }
     virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0);
     virtual void paint(PaintInfo&, int tx, int ty);
     virtual void paintBoxDecorations(PaintInfo&, int tx, int ty);
index a820ec4..10165fa 100644 (file)
@@ -604,7 +604,7 @@ void RenderTableCell::paint(PaintInfo& paintInfo, int tx, int ty)
         int h = height() + borderTopExtra() + borderBottomExtra();
         paintCollapsedBorder(paintInfo.context, tx, ty, w, h);
     } else {
-        if (ty >= paintInfo.rect.bottom() + os || ty + m_topExtra + m_height + m_bottomExtra <= paintInfo.rect.y() - os)
+        if (ty + overflowTop(false) >= paintInfo.rect.bottom() + os || ty + m_topExtra + overflowHeight(false) + m_bottomExtra <= paintInfo.rect.y() - os)
             return;
         RenderBlock::paintObject(paintInfo, tx, ty + m_topExtra);
     }
index 8a49873..a87d543 100644 (file)
@@ -67,7 +67,6 @@ public:
     virtual void setStyle(RenderStyle*);
 
     virtual bool expandsToEncloseOverhangingFloats() const { return true; }
-    virtual bool expandsToEncloseOverflow() const { return true; }
 
     int borderLeft() const;
     int borderRight() const;
index 6beddee..1403dcb 100644 (file)
@@ -56,6 +56,8 @@ RenderTableSection::RenderTableSection(Node* node)
     , m_outerBorderBottom(0)
     , m_overflowLeft(0)
     , m_overflowWidth(0)
+    , m_overflowTop(0)
+    , m_overflowHeight(0)
     , m_hasOverflowingCell(false)
 {
     // init RenderObject attributes
@@ -371,6 +373,8 @@ int RenderTableSection::layoutRows(int toAdd)
     m_width = table()->contentWidth();
     m_overflowLeft = 0;
     m_overflowWidth = m_width;
+    m_overflowTop = 0;
+    m_overflowHeight = 0;
     m_hasOverflowingCell = false;
 
     if (table()->collapseBorders())
@@ -539,7 +543,9 @@ int RenderTableSection::layoutRows(int toAdd)
 
             m_overflowLeft = min(m_overflowLeft, cell->xPos() + cell->overflowLeft(false));
             m_overflowWidth = max(m_overflowWidth, cell->xPos() + cell->overflowWidth(false));
-            m_hasOverflowingCell |= cell->overflowLeft(false) || cell->overflowWidth(false) > cell->width();
+            m_overflowTop = min(m_overflowTop, cell->yPos() + cell->overflowTop(false));
+            m_overflowHeight = max(m_overflowHeight, cell->yPos() + cell->overflowHeight(false));
+            m_hasOverflowingCell |= cell->overflowLeft(false) || cell->overflowWidth(false) > cell->width() || cell->overflowTop(false) || cell->overflowHeight(false) > cell->height();
 
             // If the cell moved, we have to repaint it as well as any floating/positioned
             // descendants.  An exception is if we need a layout.  In this case, we know we're going to
@@ -550,6 +556,7 @@ int RenderTableSection::layoutRows(int toAdd)
     }
 
     m_height = m_rowPos[totalRows];
+    m_overflowHeight = max(m_overflowHeight, m_height);
     return m_height;
 }
 
@@ -833,23 +840,26 @@ void RenderTableSection::paint(PaintInfo& paintInfo, int tx, int ty)
     int os = 2 * maximalOutlineSize(paintPhase);
     unsigned startrow = 0;
     unsigned endrow = totalRows;
-    for (; startrow < totalRows; startrow++) {
-        if (ty + m_rowPos[startrow + 1] >= y - os)
-            break;
-    }
-    if (startrow == totalRows && ty + m_rowPos[totalRows] + table()->outerBorderBottom() >= y - os)
-        startrow--;
+    
+    // If some cell overflows, just paint all of them.
+    if (!m_hasOverflowingCell) {
+        for (; startrow < totalRows; startrow++) {
+            if (ty + m_rowPos[startrow + 1] >= y - os)
+                break;
+        }
+        if (startrow == totalRows && ty + m_rowPos[totalRows] + table()->outerBorderBottom() >= y - os)
+            startrow--;
 
-    for (; endrow > 0; endrow--) {
-        if (ty + m_rowPos[endrow - 1] <= y + h + os)
-            break;
+        for (; endrow > 0; endrow--) {
+            if (ty + m_rowPos[endrow - 1] <= y + h + os)
+                break;
+        }
+        if (!endrow && ty + m_rowPos[0] - table()->outerBorderTop() <= y + h + os)
+            endrow++;
     }
-    if (!endrow && ty + m_rowPos[0] - table()->outerBorderTop() <= y + h + os)
-        endrow++;
 
     unsigned startcol = 0;
     unsigned endcol = totalCols;
-    // If some cell overflows, just paint all of them.
     // FIXME: Implement RTL.
     if (!m_hasOverflowingCell && style()->direction() == LTR) {
         for (; startcol < totalCols; startcol++) {
index fd61e7b..cb0fdf3 100644 (file)
@@ -82,6 +82,8 @@ public:
 
     virtual int overflowWidth(bool includeInterior = true) const { return (!includeInterior && hasOverflowClip()) ? m_width : m_overflowWidth; }
     virtual int overflowLeft(bool includeInterior = true) const { return (!includeInterior && hasOverflowClip()) ? 0 : m_overflowLeft; }
+    virtual int overflowHeight(bool includeInterior = true) const { return (!includeInterior && hasOverflowClip()) ? m_height : m_overflowHeight; }
+    virtual int overflowTop(bool includeInterior = true) const { return (!includeInterior && hasOverflowClip()) ? 0 : m_overflowTop; }
 
     virtual int lowestPosition(bool includeOverflowInterior, bool includeSelf) const;
     virtual int rightmostPosition(bool includeOverflowInterior, bool includeSelf) const;
@@ -146,6 +148,8 @@ protected:
     int m_outerBorderBottom;
     int m_overflowLeft;
     int m_overflowWidth;
+    int m_overflowTop;
+    int m_overflowHeight;
     bool m_hasOverflowingCell;
 };