aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flow/construct.rs
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2019-11-26 11:22:23 +0100
committerSimon Sapin <simon.sapin@exyr.org>2019-11-26 15:42:27 +0100
commitb2b3ea992c2f045a49d7264df18f5f85b2c913fb (patch)
tree21f8c5c8631d3bdd1fec74aa352f39afcdf4e3bc /components/layout_2020/flow/construct.rs
parent799057f1e62d96bbc765ac378c78d9f1049b6ced (diff)
downloadservo-b2b3ea992c2f045a49d7264df18f5f85b2c913fb.tar.gz
servo-b2b3ea992c2f045a49d7264df18f5f85b2c913fb.zip
Make IndependentFormattingContext a struct that owns styles
… and has a private enum for its contents. Privacy forces the rest of the code to go through methods rather than matching on the enum, reducing accidental layout-mode-specific behavior.
Diffstat (limited to 'components/layout_2020/flow/construct.rs')
-rw-r--r--components/layout_2020/flow/construct.rs24
1 files changed, 10 insertions, 14 deletions
diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs
index f3afabf15fc..52724eb121f 100644
--- a/components/layout_2020/flow/construct.rs
+++ b/components/layout_2020/flow/construct.rs
@@ -7,9 +7,10 @@ use crate::element_data::LayoutBox;
use crate::flow::float::FloatBox;
use crate::flow::inline::{InlineBox, InlineFormattingContext, InlineLevelBox, TextRun};
use crate::flow::{BlockContainer, BlockFormattingContext, BlockLevelBox};
+use crate::formatting_contexts::IndependentFormattingContext;
use crate::positioned::AbsolutelyPositionedBox;
use crate::style_ext::{DisplayGeneratingBox, DisplayInside, DisplayOutside};
-use crate::{take, IndependentFormattingContext};
+use crate::take;
use rayon::iter::{IntoParallelIterator, ParallelIterator};
use rayon_croissant::ParallelIteratorExt;
use servo_arc::Arc;
@@ -450,11 +451,10 @@ where
AbsolutelyPositionedBox {
contents: IndependentFormattingContext::construct(
unimplemented!(),
- &style,
+ style,
display_inside,
contents,
),
- style,
},
));
self.current_inline_level_boxes().push(box_.clone());
@@ -482,11 +482,10 @@ where
let box_ = Arc::new(InlineLevelBox::OutOfFlowFloatBox(FloatBox {
contents: IndependentFormattingContext::construct(
self.context,
- &style,
+ style,
display_inside,
contents,
),
- style,
}));
self.current_inline_level_boxes().push(box_.clone());
box_slot.set(LayoutBox::InlineLevel(box_))
@@ -562,12 +561,12 @@ where
} => {
let contents = IndependentFormattingContext::construct(
context,
- &style,
+ style,
display_inside,
contents,
);
(
- Arc::new(BlockLevelBox::Independent { style, contents }),
+ Arc::new(BlockLevelBox::Independent(contents)),
ContainsFloats::No,
)
},
@@ -580,11 +579,10 @@ where
AbsolutelyPositionedBox {
contents: IndependentFormattingContext::construct(
context,
- &style,
+ style,
display_inside,
contents,
),
- style: style,
},
));
(block_level_box, ContainsFloats::No)
@@ -596,14 +594,12 @@ where
} => {
let contents = IndependentFormattingContext::construct(
context,
- &style,
+ style,
display_inside,
contents,
);
- let block_level_box = Arc::new(BlockLevelBox::OutOfFlowFloatBox(FloatBox {
- contents,
- style,
- }));
+ let block_level_box =
+ Arc::new(BlockLevelBox::OutOfFlowFloatBox(FloatBox { contents }));
(block_level_box, ContainsFloats::Yes)
},
}