mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Introduce PositioningContext
This commit is contained in:
parent
06e3d13795
commit
b43a3de51d
5 changed files with 90 additions and 69 deletions
|
@ -12,7 +12,8 @@ use crate::formatting_contexts::IndependentFormattingContext;
|
|||
use crate::fragments::Fragment;
|
||||
use crate::geom;
|
||||
use crate::geom::flow_relative::Vec2;
|
||||
use crate::positioned::{AbsolutelyPositionedBox, AbsolutelyPositionedFragment};
|
||||
use crate::positioned::PositioningContext;
|
||||
use crate::positioned::{AbsolutelyPositionedBox, CollectedAbsolutelyPositionedBox};
|
||||
use crate::replaced::ReplacedContent;
|
||||
use crate::sizing::ContentSizesRequest;
|
||||
use crate::style_ext::{Display, DisplayGeneratingBox, DisplayInside};
|
||||
|
@ -110,24 +111,25 @@ impl BoxTreeRoot {
|
|||
};
|
||||
|
||||
let dummy_tree_rank = 0;
|
||||
let mut absolutely_positioned_fragments = vec![];
|
||||
let mut positioning_context = PositioningContext { abspos: Vec::new() };
|
||||
let mut independent_layout = self.0.layout(
|
||||
layout_context,
|
||||
&mut positioning_context,
|
||||
&(&initial_containing_block).into(),
|
||||
dummy_tree_rank,
|
||||
&mut absolutely_positioned_fragments,
|
||||
);
|
||||
|
||||
let map =
|
||||
|a: &AbsolutelyPositionedFragment| a.layout(layout_context, &initial_containing_block);
|
||||
let map = |a: &CollectedAbsolutelyPositionedBox| {
|
||||
a.layout(layout_context, &initial_containing_block)
|
||||
};
|
||||
if layout_context.use_rayon {
|
||||
independent_layout
|
||||
.fragments
|
||||
.par_extend(absolutely_positioned_fragments.par_iter().map(map))
|
||||
.par_extend(positioning_context.abspos.par_iter().map(map))
|
||||
} else {
|
||||
independent_layout
|
||||
.fragments
|
||||
.extend(absolutely_positioned_fragments.iter().map(map))
|
||||
.extend(positioning_context.abspos.iter().map(map))
|
||||
}
|
||||
|
||||
FragmentTreeRoot(independent_layout.fragments)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue