diff --git a/crates/bevy_ui/src/widget/text.rs b/crates/bevy_ui/src/widget/text.rs index 0181a8a579..d8395d4f26 100644 --- a/crates/bevy_ui/src/widget/text.rs +++ b/crates/bevy_ui/src/widget/text.rs @@ -30,7 +30,7 @@ impl Measure for TextMeasure { width: Option, height: Option, available_width: AvailableSpace, - available_height: AvailableSpace, + _available_height: AvailableSpace, ) -> Vec2 { let x = width.unwrap_or_else(|| match available_width { AvailableSpace::Definite(x) => x.clamp( @@ -43,16 +43,10 @@ impl Measure for TextMeasure { height .map_or_else( - || match available_height { - AvailableSpace::Definite(y) => { - let y = y.clamp( - self.info.max_width_content_size.y, - self.info.min_width_content_size.y, - ); - self.info.compute_size(Vec2::new(x, y)) - } - AvailableSpace::MinContent => Vec2::new(x, self.info.max_width_content_size.y), - AvailableSpace::MaxContent => Vec2::new(x, self.info.min_width_content_size.y), + || match available_width { + AvailableSpace::Definite(_) => self.info.compute_size(Vec2::new(x, f32::MAX)), + AvailableSpace::MinContent => Vec2::new(x, self.info.min_width_content_size.y), + AvailableSpace::MaxContent => Vec2::new(x, self.info.max_width_content_size.y), }, |y| Vec2::new(x, y), ) diff --git a/examples/ui/grid.rs b/examples/ui/grid.rs index 7a2a5503fb..df674067f7 100644 --- a/examples/ui/grid.rs +++ b/examples/ui/grid.rs @@ -124,8 +124,13 @@ fn spawn_layout(mut commands: Commands, asset_server: Res) { align_items: AlignItems::Start, // Align content towards the center in the horizontal axis justify_items: JustifyItems::Center, - // Add 20px padding to the top - padding: UiRect::top(Val::Px(20.)), + // Add 10px padding + padding: UiRect::all(Val::Px(10.)), + // Add an fr track to take up all the available space at the bottom of the column so that the text nodes + // can be top-aligned. Normally you'd use flexbox for this, but this is the CSS Grid example so we're using grid. + grid_template_rows: vec![GridTrack::auto(), GridTrack::auto(), GridTrack::fr(1.0)], + // Add a 10px gap between rows + gap: Size::height(Val::Px(10.)), ..default() }, background_color: BackgroundColor(Color::BLACK), @@ -135,11 +140,20 @@ fn spawn_layout(mut commands: Commands, asset_server: Res) { builder.spawn(TextBundle::from_section( "Sidebar", TextStyle { - font, + font: font.clone(), font_size: 24.0, color: Color::WHITE, }, )); + builder.spawn(TextBundle::from_section( + "A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely. A paragraph of text which ought to wrap nicely.", + TextStyle { + font: font.clone(), + font_size: 16.0, + color: Color::WHITE, + }, + )); + builder.spawn(NodeBundle::default()); }); // Footer / status bar