aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flexbox
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2023-08-03 10:51:27 +0200
committerGitHub <noreply@github.com>2023-08-03 08:51:27 +0000
commit1296ddf2736e55e813f26aeebfdd231e761dfb3e (patch)
tree2e21ece4fdfa27f4fe1f9503113ba9b18d278051 /components/layout_2020/flexbox
parent4c8db6af8730ff0213fc08b79a2dbc78b310394b (diff)
downloadservo-1296ddf2736e55e813f26aeebfdd231e761dfb3e.tar.gz
servo-1296ddf2736e55e813f26aeebfdd231e761dfb3e.zip
Make fewer PositioningContexts when descending (#30061)
When descending and we have the option, don't create new PositioningContexts just to update the static position of laid out abspos descendants. Instead, use the new PositioningContextLength to only update the newly added hoisted abspos boxes.
Diffstat (limited to 'components/layout_2020/flexbox')
-rw-r--r--components/layout_2020/flexbox/layout.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs
index 19619375b99..f4cc3e2cf4c 100644
--- a/components/layout_2020/flexbox/layout.rs
+++ b/components/layout_2020/flexbox/layout.rs
@@ -11,7 +11,7 @@ use crate::formatting_contexts::{IndependentFormattingContext, IndependentLayout
use crate::fragment_tree::{BoxFragment, CollapsedBlockMargins, Fragment};
use crate::geom::flow_relative::{Rect, Sides, Vec2};
use crate::geom::LengthOrAuto;
-use crate::positioned::{AbsolutelyPositionedBox, PositioningContext};
+use crate::positioned::{AbsolutelyPositionedBox, PositioningContext, PositioningContextLength};
use crate::sizing::ContentSizes;
use crate::style_ext::ComputedValuesExt;
use crate::ContainingBlock;
@@ -194,8 +194,10 @@ impl FlexContainer {
let (fragment, mut child_positioning_context) =
flex_item_fragments.next().unwrap();
let fragment = Fragment::Box(fragment);
- child_positioning_context
- .adjust_static_position_of_hoisted_fragments(&fragment);
+ child_positioning_context.adjust_static_position_of_hoisted_fragments(
+ &fragment,
+ PositioningContextLength::zero(),
+ );
positioning_context.append(child_positioning_context);
fragment
},