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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc

Issue 2330153002: [layoutng] Better handling of border and padding (Closed)
Patch Set: Created 4 years, 3 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/Source/core/layout/ng/ng_block_layout_algorithm.h ('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/ng/ng_block_layout_algorithm.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
index ae4722e5639624aede739e87e0b97c50998941fa..7802a947690f6703c24801e81f04ca18f931363a 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
@@ -38,16 +38,20 @@ bool NGBlockLayoutAlgorithm::Layout(const NGConstraintSpace* constraint_space,
NGPhysicalFragment** out) {
switch (state_) {
case kStateInit: {
+ border_and_padding_ =
+ computeBorders(*style_) + computePadding(*constraint_space, *style_);
+
LayoutUnit inline_size =
computeInlineSizeForFragment(*constraint_space, *style_);
// TODO(layout-ng): For quirks mode, should we pass blockSize instead of
// -1?
LayoutUnit block_size = computeBlockSizeForFragment(
*constraint_space, *style_, LayoutUnit(-1));
- constraint_space_for_children_ =
- new NGConstraintSpace(*constraint_space, NGLogicalOffset(),
- NGLogicalSize(inline_size, block_size));
- content_size_ = LayoutUnit();
+ constraint_space_for_children_ = new NGConstraintSpace(
+ *constraint_space, NGLogicalOffset(),
+ NGLogicalSize(inline_size - border_and_padding_.inline_start,
mstensho (USE GERRIT) 2016/09/12 20:05:50 I may lack some understanding of how this thing wo
cbiesinger 2016/09/13 18:04:54 Great point! That should be changed, thanks.
+ block_size - border_and_padding_.block_start));
+ content_size_ = border_and_padding_.block_start;
builder_ = new NGFragmentBuilder(NGPhysicalFragmentBase::FragmentBox);
builder_->SetInlineSize(inline_size).SetBlockSize(block_size);
@@ -68,13 +72,15 @@ bool NGBlockLayoutAlgorithm::Layout(const NGConstraintSpace* constraint_space,
// TODO(layout-ng): Support auto margins
builder_->AddChild(fragment,
- NGLogicalOffset(child_margins.inline_start,
+ NGLogicalOffset(border_and_padding_.inline_start +
+ child_margins.inline_start,
content_size_ + margin_block_start));
content_size_ += fragment->BlockSize() + margin_block_start;
max_inline_size_ =
- std::max(max_inline_size_,
- fragment->InlineSize() + child_margins.InlineSum());
+ std::max(max_inline_size_, fragment->InlineSize() +
+ child_margins.InlineSum() +
+ border_and_padding_.InlineSum());
current_child_ = current_child_->NextSibling();
if (current_child_)
return false;
@@ -83,6 +89,7 @@ bool NGBlockLayoutAlgorithm::Layout(const NGConstraintSpace* constraint_space,
return false;
}
case kStateFinalize: {
+ content_size_ += border_and_padding_.block_end;
// Recompute the block-axis size now that we know our content size.
LayoutUnit block_size = computeBlockSizeForFragment(
*constraint_space, *style_, content_size_);
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698