Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1257)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutBox.cpp

Issue 2380813002: [CSS Shapes] Properly shrink boxes to avoid shape-outside (Closed)
Patch Set: Reformat Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/shapes/shape-outside-floats/shape-overflow-hidden-vertical-expected.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/LayoutBox.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
index b59cf4626abb3a6e4380f5724f7e55c2d0214412..e186382a3529d4f846df03fbb88ec6530bc04403 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
@@ -1825,22 +1825,23 @@ LayoutUnit LayoutBox::shrinkLogicalWidthToAvoidFloats(
LayoutUnit logicalTopPosition = logicalTop();
LayoutUnit startOffsetForContent = cb->startOffsetForContent();
LayoutUnit endOffsetForContent = cb->endOffsetForContent();
- LayoutUnit startOffsetForLine =
- cb->startOffsetForLine(logicalTopPosition, DoNotIndentText);
+ LayoutUnit logicalHeight = cb->logicalHeightForChild(*this);
+ LayoutUnit startOffsetForLine = cb->startOffsetForLine(
+ logicalTopPosition, DoNotIndentText, logicalHeight);
LayoutUnit endOffsetForLine =
- cb->endOffsetForLine(logicalTopPosition, DoNotIndentText);
+ cb->endOffsetForLine(logicalTopPosition, DoNotIndentText, logicalHeight);
// If there aren't any floats constraining us then allow the margins to shrink/expand the width as much as they want.
if (startOffsetForContent == startOffsetForLine &&
endOffsetForContent == endOffsetForLine)
- return cb->availableLogicalWidthForLine(logicalTopPosition,
- DoNotIndentText) -
+ return cb->availableLogicalWidthForLine(logicalTopPosition, DoNotIndentText,
+ logicalHeight) -
childMarginStart - childMarginEnd;
- LayoutUnit width =
- cb->availableLogicalWidthForLine(logicalTopPosition, DoNotIndentText) -
- std::max(LayoutUnit(), childMarginStart) -
- std::max(LayoutUnit(), childMarginEnd);
+ LayoutUnit width = cb->availableLogicalWidthForLine(
+ logicalTopPosition, DoNotIndentText, logicalHeight) -
+ std::max(LayoutUnit(), childMarginStart) -
+ std::max(LayoutUnit(), childMarginEnd);
// We need to see if margins on either the start side or the end side can contain the floats in question. If they can,
// then just using the line width is inaccurate. In the case where a float completely fits, we don't need to use the line
// offset at all, but can instead push all the way to the content edge of the containing block. In the case where the float
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/shapes/shape-outside-floats/shape-overflow-hidden-vertical-expected.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698