Bug 66254

Summary: [CSSRegions] Make regions repaint properly.
Product: WebKit Reporter: Dave Hyatt <hyatt>
Component: Layout and RenderingAssignee: Dave Hyatt <hyatt>
Status: RESOLVED FIXED    
Severity: Normal CC: achicu, mihnea, rcaliman, stearns
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 57312    
Attachments:
Description Flags
Work in progress (just need tests)
none
Patch simon.fraser: review+

Description Dave Hyatt 2011-08-15 14:40:11 PDT
Make sure regions do proper repainting when their content changes.
Comment 1 Dave Hyatt 2011-08-15 14:40:58 PDT
Created attachment 103957 [details]
Work in progress (just need tests)
Comment 2 Simon Fraser (smfr) 2011-08-15 14:44:53 PDT
Comment on attachment 103957 [details]
Work in progress (just need tests)

View in context: https://bugs.webkit.org/attachment.cgi?id=103957&action=review

> Source/WebCore/rendering/RenderView.h:251
>      bool m_pageLogicalHeightChanged;
>      LayoutState* m_layoutState;
>      unsigned m_layoutStateDisableCount;
> +    bool m_hasRenderFlowThreads;

Put this next to the other bools to reduce padding.
Comment 3 Mihnea Ovidenie 2011-08-16 10:52:53 PDT
This will likely also fix https://bugs.webkit.org/show_bug.cgi?id=66199.
Comment 4 Dave Hyatt 2011-08-16 11:39:25 PDT
Created attachment 104073 [details]
Patch
Comment 5 Simon Fraser (smfr) 2011-08-16 11:45:42 PDT
Comment on attachment 104073 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=104073&action=review

> Source/WebCore/rendering/RenderFlowThread.cpp:305
> +        // We only have to issue a repaint in this region if the region rect intersects the repaint rect.
> +        LayoutRect flippedRegionRect(region->regionRect());
> +        flipForWritingMode(flippedRegionRect); // Put the region rect into physical coordinates.

Can we assume that the rect will only intersect some contiguous set of regions? That might avoid having to iterate through all regions for each repaint, which is not terribly efficient.

> LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-in-regions-expected.txt:1
> +layer at (0,0) size 800x600

Can the tests avoid the use of so much text, to reduce spurious pixel diffs?
Comment 6 Dave Hyatt 2011-09-23 13:25:01 PDT
Fixed ages ago. Just forgot to close.