Add from_vec method to Column and Row

This commit is contained in:
Héctor Ramón Jiménez 2024-02-19 08:49:28 +01:00
parent 9f0bbf6020
commit e60dabddef
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 45 additions and 19 deletions

View file

@ -30,16 +30,7 @@ where
{
/// Creates an empty [`Column`].
pub fn new() -> Self {
Column {
spacing: 0.0,
padding: Padding::ZERO,
width: Length::Shrink,
height: Length::Shrink,
max_width: f32::INFINITY,
align_items: Alignment::Start,
clip: false,
children: Vec::new(),
}
Self::from_vec(Vec::new())
}
/// Creates a [`Column`] with the given elements.
@ -49,6 +40,28 @@ where
Self::new().extend(children)
}
/// Creates a [`Column`] from an already allocated [`Vec`].
///
/// Keep in mind that the [`Column`] will not inspect the [`Vec`], which means
/// it won't automatically adapt to the sizing strategy of its contents.
///
/// If any of the children have a [`Length::Fill`] strategy, you will need to
/// call [`Column::width`] or [`Column::height`] accordingly.
pub fn from_vec(
children: Vec<Element<'a, Message, Theme, Renderer>>,
) -> Self {
Self {
spacing: 0.0,
padding: Padding::ZERO,
width: Length::Shrink,
height: Length::Shrink,
max_width: f32::INFINITY,
align_items: Alignment::Start,
clip: false,
children,
}
}
/// Sets the vertical spacing _between_ elements.
///
/// Custom margins per element do not exist in iced. You should use this

View file

@ -28,15 +28,7 @@ where
{
/// Creates an empty [`Row`].
pub fn new() -> Self {
Row {
spacing: 0.0,
padding: Padding::ZERO,
width: Length::Shrink,
height: Length::Shrink,
align_items: Alignment::Start,
clip: false,
children: Vec::new(),
}
Self::from_vec(Vec::new())
}
/// Creates a [`Row`] with the given elements.
@ -46,6 +38,27 @@ where
Self::new().extend(children)
}
/// Creates a [`Row`] from an already allocated [`Vec`].
///
/// Keep in mind that the [`Row`] will not inspect the [`Vec`], which means
/// it won't automatically adapt to the sizing strategy of its contents.
///
/// If any of the children have a [`Length::Fill`] strategy, you will need to
/// call [`Row::width`] or [`Row::height`] accordingly.
pub fn from_vec(
children: Vec<Element<'a, Message, Theme, Renderer>>,
) -> Self {
Self {
spacing: 0.0,
padding: Padding::ZERO,
width: Length::Shrink,
height: Length::Shrink,
align_items: Alignment::Start,
clip: false,
children,
}
}
/// Sets the horizontal spacing _between_ elements.
///
/// Custom margins per element do not exist in iced. You should use this