Change summary
crates/contacts_panel/src/contacts_panel.rs | 1 -
crates/gpui/src/elements/flex.rs | 16 ++++++++++++----
2 files changed, 12 insertions(+), 5 deletions(-)
Detailed changes
@@ -378,7 +378,6 @@ impl ContactsPanel {
.contained()
.with_style(theme.edit_contact.container)
.aligned()
- .flex_float()
.boxed()
})
.on_click(move |_, cx| {
@@ -117,14 +117,15 @@ impl Element for Flex {
) -> (Vector2F, Self::LayoutState) {
let mut total_flex = None;
let mut fixed_space = 0.0;
+ let mut contains_float = false;
let cross_axis = self.axis.invert();
let mut cross_axis_max: f32 = 0.0;
for child in &mut self.children {
- if let Some(flex) = child
- .metadata::<FlexParentData>()
- .and_then(|metadata| metadata.flex.map(|(flex, _)| flex))
- {
+ let metadata = child.metadata::<FlexParentData>();
+ contains_float |= metadata.map_or(false, |metadata| metadata.float);
+
+ if let Some(flex) = metadata.and_then(|metadata| metadata.flex.map(|(flex, _)| flex)) {
*total_flex.get_or_insert(0.) += flex;
} else {
let child_constraint = match self.axis {
@@ -177,6 +178,13 @@ impl Element for Flex {
}
};
+ if contains_float {
+ match self.axis {
+ Axis::Horizontal => size.set_x(size.x().max(constraint.max.x())),
+ Axis::Vertical => size.set_y(size.y().max(constraint.max.y())),
+ }
+ }
+
if constraint.min.x().is_finite() {
size.set_x(size.x().max(constraint.min.x()));
}