Changeset 136793 in webkit


Ignore:
Timestamp:
Dec 5, 2012 7:47:00 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[CSS Regions] Blocks don't relayout children if the width of a region changes
https://bugs.webkit.org/show_bug.cgi?id=103993

Patch by Andrei Bucur <abucur@adobe.com> on 2012-12-05
Reviewed by David Hyatt.

Source/WebCore:

After r135750 lines are no longer invalidating when regions change width. This is happening because the detection for the width change was being done
only at line layout time. This patch moves the line relayout decision to the containing block by setting the relayoutChildren flag if the block
has no region chain attached.

Tests: fast/regions/region-width-change-relayout-1.html

fast/regions/region-width-change-relayout-2.html
fast/regions/region-width-change-relayout-3.html

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::logicalWidthChangedInRegions):

LayoutTests:

The first test covers the case of reducing the width of a region for a block content node.
The second test covers the case of expanding the width of a region for a block content node.
The third test covers the case of reducing the width of a region for an inline content node.

  • fast/regions/region-width-change-relayout-1-expected.html: Added.
  • fast/regions/region-width-change-relayout-1.html: Added.
  • fast/regions/region-width-change-relayout-2-expected.html: Added.
  • fast/regions/region-width-change-relayout-2.html: Added.
  • fast/regions/region-width-change-relayout-3-expected.html: Added.
  • fast/regions/region-width-change-relayout-3.html: Added.
Location:
trunk
Files:
6 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r136786 r136793  
     12012-12-05  Andrei Bucur  <abucur@adobe.com>
     2
     3        [CSS Regions] Blocks don't relayout children if the width of a region changes
     4        https://bugs.webkit.org/show_bug.cgi?id=103993
     5
     6        Reviewed by David Hyatt.
     7
     8        The first test covers the case of reducing the width of a region for a block content node.
     9        The second test covers the case of expanding the width of a region for a block content node.
     10        The third test covers the case of reducing the width of a region for an inline content node.
     11
     12        * fast/regions/region-width-change-relayout-1-expected.html: Added.
     13        * fast/regions/region-width-change-relayout-1.html: Added.
     14        * fast/regions/region-width-change-relayout-2-expected.html: Added.
     15        * fast/regions/region-width-change-relayout-2.html: Added.
     16        * fast/regions/region-width-change-relayout-3-expected.html: Added.
     17        * fast/regions/region-width-change-relayout-3.html: Added.
     18
    1192012-12-05  KyungTae Kim  <ktf.kim@samsung.com>
    220
  • trunk/Source/WebCore/ChangeLog

    r136791 r136793  
     12012-12-05  Andrei Bucur  <abucur@adobe.com>
     2
     3        [CSS Regions] Blocks don't relayout children if the width of a region changes
     4        https://bugs.webkit.org/show_bug.cgi?id=103993
     5
     6        Reviewed by David Hyatt.
     7
     8        After r135750 lines are no longer invalidating when regions change width. This is happening because the detection for the width change was being done
     9        only at line layout time. This patch moves the line relayout decision to the containing block by setting the relayoutChildren flag if the block
     10        has no region chain attached.
     11
     12        Tests: fast/regions/region-width-change-relayout-1.html
     13               fast/regions/region-width-change-relayout-2.html
     14               fast/regions/region-width-change-relayout-3.html
     15
     16        * rendering/RenderFlowThread.cpp:
     17        (WebCore::RenderFlowThread::logicalWidthChangedInRegions):
     18
    1192012-12-05  Kihong Kwon  <kihong.kwon@samsung.com>
    220
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r136039 r136793  
    463463    getRegionRangeForBox(block, startRegion, endRegion);
    464464
     465    // If the block doesn't have a startRegion (and implicitly a region range) it's safe to assume the width in regions has changed (e.g. the region chain was invalidated).
     466    if (!startRegion)
     467        return true;
     468
    465469    for (RenderRegionList::iterator iter = m_regionList.find(startRegion); iter != m_regionList.end(); ++iter) {
    466470        RenderRegion* region = *iter;
Note: See TracChangeset for help on using the changeset viewer.