Fix Column and Row fluidity being overridden by push

This commit is contained in:
Héctor Ramón Jiménez 2024-02-27 01:21:02 +01:00
parent 58a7007ac1
commit 01fbd5049d
No known key found for this signature in database
GPG key ID: 0BF4EC06CD8E5686
4 changed files with 19 additions and 25 deletions

View file

@ -48,12 +48,21 @@ impl Length {
/// Specifically:
/// - [`Length::Shrink`] if [`Length::Shrink`] or [`Length::Fixed`].
/// - [`Length::Fill`] otherwise.
pub fn fluid(&self) -> Length {
pub fn fluid(&self) -> Self {
match self {
Length::Fill | Length::FillPortion(_) => Length::Fill,
Length::Shrink | Length::Fixed(_) => Length::Shrink,
}
}
/// Adapts the [`Length`] so it can contain the other [`Length`] and
/// match its fluidity.
pub fn enclose(self, other: Length) -> Self {
match (self, other) {
(Length::Shrink, Length::Fill | Length::FillPortion(_)) => other,
_ => self,
}
}
}
impl From<Pixels> for Length {

View file

@ -115,15 +115,10 @@ where
child: impl Into<Element<'a, Message, Theme, Renderer>>,
) -> Self {
let child = child.into();
let size = child.as_widget().size_hint();
let child_size = child.as_widget().size_hint();
if size.width.is_fill() {
self.width = Length::Fill;
}
if size.height.is_fill() {
self.height = Length::Fill;
}
self.width = self.width.enclose(child_size.width);
self.height = self.height.enclose(child_size.height);
self.children.push(child);
self

View file

@ -110,15 +110,10 @@ where
child: impl Into<Element<'a, Message, Theme, Renderer>>,
) -> Self {
let child = child.into();
let size = child.as_widget().size_hint();
let child_size = child.as_widget().size_hint();
if size.width.is_fill() {
self.width = Length::Fill;
}
if size.height.is_fill() {
self.height = Length::Fill;
}
self.width = self.width.enclose(child_size.width);
self.height = self.height.enclose(child_size.height);
self.keys.push(key);
self.children.push(child);

View file

@ -106,15 +106,10 @@ where
child: impl Into<Element<'a, Message, Theme, Renderer>>,
) -> Self {
let child = child.into();
let size = child.as_widget().size_hint();
let child_size = child.as_widget().size_hint();
if size.width.is_fill() {
self.width = Length::Fill;
}
if size.height.is_fill() {
self.height = Length::Fill;
}
self.width = self.width.enclose(child_size.width);
self.height = self.height.enclose(child_size.height);
self.children.push(child);
self