RESOLVED FIXED Bug 115456
[CSS Regions][CSS Exclusions] Shape-inside on regions should respect region borders and paddings
https://bugs.webkit.org/show_bug.cgi?id=115456
Summary [CSS Regions][CSS Exclusions] Shape-inside on regions should respect region b...
Zoltan Horvath
Reported 2013-04-30 16:26:38 PDT
I started to work on bug #115001, but shape-inside on regions doesn't respect the region's borders well. In order to fix bug #115001 first we need to fix the border handling, so I've made a separate patch to fix the border issue on shape-inside on regions, in this patch I moved the renderflowthread (http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/ExclusionShapeInfo.cpp?rev=149226#L62) logic from ShapeInsideInfo to RenderBlockLineLayout.cpp and added several test cases for shape-inside on regions.
Attachments
proposed patch (46.64 KB, patch)
2013-05-07 11:40 PDT, Zoltan Horvath
hyatt: review-
proposed patch (51.13 KB, patch)
2013-05-10 14:03 PDT, Zoltan Horvath
zoltan: commit-queue+
Zoltan Horvath
Comment 1 2013-05-07 11:40:18 PDT
Created attachment 200950 [details] proposed patch
Dave Hyatt
Comment 2 2013-05-09 13:34:18 PDT
Comment on attachment 200950 [details] proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=200950&action=review Would be nice as this code grows to get it out of layoutRunsAndFloatsInRange and into helpers. > Source/WebCore/rendering/RenderBlockLineLayout.cpp:1716 > #if ENABLE(CSS_EXCLUSIONS) > - // FIXME: Bug 95361: It is possible for a line to grow beyond lineHeight, in which > - // case these segments may be incorrect. > - if (layoutState.flowThread()) > + RenderRegion* currentRegion = regionAtBlockOffset(logicalHeight()); > + if (currentRegion) > exclusionShapeInsideInfo = layoutExclusionShapeInsideInfo(); > if (exclusionShapeInsideInfo) { > LayoutUnit lineTop = logicalHeight() + absoluteLogicalTop; > - exclusionShapeInsideInfo->computeSegmentsForLine(lineTop, lineHeight(layoutState.lineInfo().isFirstLine(), isHorizontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); > + LayoutUnit lineHeight = this->lineHeight(layoutState.lineInfo().isFirstLine(), isHorizontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes); > + > + if (layoutState.flowThread()) { > + RenderRegion* nextRegion = regionAtBlockOffset(logicalHeight() + lineHeight - LayoutUnit(1)); > + lineTop += exclusionShapeInsideInfo->owner()->borderAndPaddingBefore(); > + // Content in a flow thread is relative to the beginning of the thread, but the shape calculation should be relative to the current region. > + if (currentRegion == nextRegion) > + lineTop -= currentRegion->logicalTopForFlowThreadContent(); > + } > + > + // FIXME: Bug 95361: It is possible for a line to grow beyond lineHeight, in which case these segments may be incorrect. > + exclusionShapeInsideInfo->computeSegmentsForLine(lineTop, lineHeight); Can we get this shifted into a helper function? It seems sizable enough that getting it out of layoutRunsAndFloatsInRange and into a helper would be nice. > Source/WebCore/rendering/RenderBlockLineLayout.cpp:1746 > #if ENABLE(CSS_EXCLUSIONS) > if (LayoutUnit adjustedLogicalLineTop = adjustLogicalLineTop(exclusionShapeInsideInfo, resolver.position(), end, wordMeasurements)) { > - end = restartLayoutRunsAndFloatsInRange(logicalHeight(), adjustedLogicalLineTop - absoluteLogicalTop, lastFloatFromPreviousLine, resolver, oldEnd); > + LayoutUnit newLogicalHeight = adjustedLogicalLineTop - absoluteLogicalTop; > + if (layoutState.flowThread()) > + newLogicalHeight -= currentRegion->logicalTopForFlowThreadContent(); > + end = restartLayoutRunsAndFloatsInRange(logicalHeight(), newLogicalHeight, lastFloatFromPreviousLine, resolver, oldEnd); > continue; > } > #endif Seems like this could be shifted into a helper too... maybe combined with or rolled into adjustLogicalLineTop. if (helperFunction()) continue;
Zoltan Horvath
Comment 3 2013-05-10 14:03:18 PDT
Created attachment 201421 [details] proposed patch > (From update of attachment 200950 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=200950&action=review > > Would be nice as this code grows to get it out of layoutRunsAndFloatsInRange and into helpers. Done. > Seems like this could be shifted into a helper too... maybe combined with or rolled into adjustLogicalLineTop. I've added a separate one. If you wish we can combine with adjustLogicalLineTop later.
Dave Hyatt
Comment 4 2013-05-13 11:24:17 PDT
Comment on attachment 201421 [details] proposed patch r=me
WebKit Commit Bot
Comment 5 2013-05-13 12:09:50 PDT
The commit-queue encountered the following flaky tests while processing attachment 201421 [details]: platform/mac/fonts/han-disunification.html bug 114207 (author: ap@webkit.org) platform/mac/editing/deleting/deletionUI-single-instance.html bug 114181 (author: rniwa@webkit.org) transitions/color-transition-rounding.html bug 114182 (author: simon.fraser@apple.com) transitions/cubic-bezier-overflow-svg-length.html bug 114183 (author: peter@chromium.org) transitions/interrupt-zero-duration.html bug 114184 (authors: cmarrin@apple.com, rniwa@webkit.org, and simon.fraser@apple.com) transitions/multiple-background-transitions.html bug 114185 (author: simon.fraser@apple.com) transitions/cubic-bezier-overflow-color.html bug 114186 (author: peter@chromium.org) transitions/mismatched-shadow-transitions.html bug 114188 (author: simon.fraser@apple.com) transitions/color-transition-all.html bug 114189 (authors: ossy@webkit.org and simon.fraser@apple.com) transitions/cubic-bezier-overflow-shadow.html bug 114191 (author: peter@chromium.org) transitions/min-max-width-height-transitions.html bug 114192 (author: simon.fraser@apple.com) transitions/cancel-transition.html bug 114193 (authors: ojan@chromium.org, rniwa@webkit.org, and simon.fraser@apple.com) transitions/border-radius-transition.html bug 114194 (author: simon.fraser@apple.com) transitions/flex-transitions.html bug 114195 (author: tony@chromium.org) transitions/mixed-type.html bug 114196 (author: mikelawther@chromium.org) transitions/multiple-mask-transitions.html bug 114197 (author: simon.fraser@apple.com) transitions/color-transition-premultiplied.html bug 114198 (author: simon.fraser@apple.com) transitions/mismatched-shadow-styles.html bug 114199 (author: simon.fraser@apple.com) transitions/mask-transitions.html bug 114200 (authors: ojan@chromium.org, oliver@apple.com, and simon.fraser@apple.com) transitions/cubic-bezier-overflow-length.html bug 114201 (author: peter@chromium.org) transitions/multiple-background-size-transitions.html bug 114202 (authors: mitz@webkit.org and simon.fraser@apple.com) transitions/clip-transition.html bug 114203 (authors: dglazkov@chromium.org, krit@webkit.org, and simon.fraser@apple.com) transitions/cubic-bezier-overflow-transform.html bug 114204 (author: peter@chromium.org) transitions/interrupted-accelerated-transition.html bug 56242 (authors: rniwa@webkit.org, simon.fraser@apple.com, and tonyg@chromium.org) transitions/background-transitions.html bug 114206 (author: simon.fraser@apple.com) http/tests/security/cookies/third-party-cookie-blocking-user-action.html bug 114511 (authors: ap@webkit.org, jochen@chromium.org, and rniwa@webkit.org) http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html bug 114208 (authors: abarth@webkit.org and rniwa@webkit.org) fast/table/table-rowspan-height-distribution-in-rows.html bug 116053 fast/loader/javascript-url-in-object.html bug 114210 (authors: rniwa@webkit.org and sam@webkit.org) media/media-element-play-after-eos.html bug 115048 (authors: fischman@chromium.org and pnormand@igalia.com) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 6 2013-05-13 12:10:56 PDT
Comment on attachment 201421 [details] proposed patch Clearing flags on attachment: 201421 Committed r150027: <http://trac.webkit.org/changeset/150027>
WebKit Commit Bot
Comment 7 2013-05-13 12:10:59 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.