WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED INVALID
100999
[CSS Exclusions] Shape-inside content area may be larger than default content area
https://bugs.webkit.org/show_bug.cgi?id=100999
Summary
[CSS Exclusions] Shape-inside content area may be larger than default content...
Bear Travis
Reported
2012-11-01 16:42:02 PDT
The shape-inside content area is currently clipped to the default content area.
Attachments
proposed patch
(5.11 KB, patch)
2012-11-07 15:37 PST
,
Zoltan Horvath
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Zoltan Horvath
Comment 1
2012-11-07 15:37:18 PST
Created
attachment 172882
[details]
proposed patch
Bear Travis
Comment 2
2012-11-07 22:08:28 PST
Comment on
attachment 172882
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=172882&action=review
The patch only tests a shape inside larger than the content area on the right/bottom sides. It also needs to deal with the upper/left sides. Check out the beginning of layoutRunsAndFloatsInRange and the setLogicalHeight call for how the top is set now. Also, the simple-rectangle.js script is designed to cover these basic test cases. I know that some of the changes here may break the simple float test case, but you might remove that test case to be added at a later date, since making floats work with shape-inside will require significant work.
> Source/WebCore/rendering/RenderBlockLineLayout.cpp:165 > m_left = max<float>(m_segment->logicalLeft, m_left); > - m_right = min<float>(m_segment->logicalRight, m_right); > + > + if (!(m_block->m_floatingObjects && m_block->m_floatingObjects->hasRightObjects()) && m_segment->logicalRight > m_right) > + m_right = m_segment->logicalRight; > + else > + m_right = min<float>(m_segment->logicalRight, m_right);
Do you know that if there are right floating objects, they necessarily affect this line? I think that the floating objects set contains all of this block's floats, so they may not. I think these lines should just be: m_left = m_segment->logicalLeft; m_right = m_segment->logicalRight; This leaves the issue of floats, but perhaps the better thing would be to pull out the float test and implement that in a subsequent patch.
> LayoutTests/fast/exclusions/shape-inside/shape-inside-with-larger-content-area.html:16 > + -webkit-shape-inside: rectangle(0, 0, 200px, 200px);
You need to test the rectangle going beyond the bounds of each of the boxes (content, padding, border, margin). I think to start, just going outside the margin box would be sufficient. eg, #shape-inside { position: absolute; left: 10px; top: 10px; width: 180px; height: 180px; -webkit-shape-inside: rectangle(-10px, -10px, 200px, 200px); } Although really, this should be wrapped into using resources/simple-rectangle.js, in which case you would include the custom styling: #shape-inside { position: absolute; left: 10px; top: 10px; } and the script: createRectangleTest('shape-inside', 'stylesheet', { width: 200, height: 200 }, { x: -10, y: -10, width: 200, height: 200 }, 'px', null); // use null for the last argument if you want to leave shape-inside's content in place You can also see shape-inside-subsequent-blocks, and shape-inside-multiple-blocks-dynamic. The scripts obviate the need for the 'helper' element.
Zoltan Horvath
Comment 3
2012-11-07 22:54:49 PST
Comment on
attachment 172882
[details]
proposed patch I removed the patch from the review queue since it needs some improvement. Thanks for the comments, things are one step clearer know.
Zoltan Horvath
Comment 4
2013-01-24 16:36:57 PST
The spec has been changed. This bug is not valid anymore.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug