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

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

Issue 2655783006: Top down version of algorithm to position margins and floats in LayoutNG (Closed)
Patch Set: git rebase-update Created 3 years, 11 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
Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
index ac99cdd46c2c8c7e3304277d7a1a78bca7833097..e35cee1649d36187cc10c7ce69b6f8c22d636783 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
@@ -23,6 +23,7 @@ NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(
fragmentation_type_(parent_space->BlockFragmentationType()),
is_new_fc_(parent_space->IsNewFormattingContext()),
text_direction_(static_cast<unsigned>(parent_space->Direction())),
+ bfc_offset_(parent_space->bfc_offset_),
exclusions_(parent_space->Exclusions()) {}
NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
@@ -57,6 +58,12 @@ NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection(
return *this;
}
+NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetMarginStrut(
+ const NGMarginStrut& margin_strut) {
+ margin_strut_ = margin_strut;
+ return *this;
+}
+
NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline(
bool is_fixed_size_inline) {
is_fixed_size_inline_ = is_fixed_size_inline;
@@ -119,6 +126,9 @@ NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() {
bool is_in_parallel_flow = (parent_writing_mode_ == kHorizontalTopBottom) ==
(writing_mode_ == kHorizontalTopBottom);
+ NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_;
+ NGLogicalOffset bfc_offset = is_new_fc_ ? NGLogicalOffset() : bfc_offset_;
+
if (is_in_parallel_flow) {
return new NGConstraintSpace(
static_cast<NGWritingMode>(writing_mode_),
@@ -131,7 +141,7 @@ NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() {
is_inline_direction_triggers_scrollbar_,
is_block_direction_triggers_scrollbar_,
static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
- exclusions);
+ margin_strut, bfc_offset, exclusions);
}
return new NGConstraintSpace(
@@ -145,7 +155,7 @@ NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() {
is_block_direction_triggers_scrollbar_,
is_inline_direction_triggers_scrollbar_,
static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
- exclusions);
+ margin_strut, bfc_offset, exclusions);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698