mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 00:19:46 +00:00
Avoid invalid lifecycle state for flex element when total child flex is zero
This commit is contained in:
parent
00f6bdcb24
commit
cff6ffb716
1 changed files with 3 additions and 4 deletions
|
@ -90,14 +90,14 @@ impl Element for Flex {
|
|||
constraint: SizeConstraint,
|
||||
cx: &mut LayoutContext,
|
||||
) -> (Vector2F, Self::LayoutState) {
|
||||
let mut total_flex = 0.0;
|
||||
let mut total_flex = None;
|
||||
let mut fixed_space = 0.0;
|
||||
|
||||
let cross_axis = self.axis.invert();
|
||||
let mut cross_axis_max: f32 = 0.0;
|
||||
for child in &mut self.children {
|
||||
if let Some(metadata) = child.metadata::<FlexParentData>() {
|
||||
total_flex += metadata.flex;
|
||||
*total_flex.get_or_insert(0.) += metadata.flex;
|
||||
} else {
|
||||
let child_constraint = match self.axis {
|
||||
Axis::Horizontal => SizeConstraint::new(
|
||||
|
@ -115,13 +115,12 @@ impl Element for Flex {
|
|||
}
|
||||
}
|
||||
|
||||
let mut size = if total_flex > 0.0 {
|
||||
let mut size = if let Some(mut remaining_flex) = total_flex {
|
||||
if constraint.max_along(self.axis).is_infinite() {
|
||||
panic!("flex contains flexible children but has an infinite constraint along the flex axis");
|
||||
}
|
||||
|
||||
let mut remaining_space = constraint.max_along(self.axis) - fixed_space;
|
||||
let mut remaining_flex = total_flex;
|
||||
self.layout_flex_children(
|
||||
false,
|
||||
constraint,
|
||||
|
|
Loading…
Reference in a new issue