Fix the AlignSelf documentation (#7577)
# Objective
The current `AlignSelf` doc comments:
```rust
pub enum AlignSelf {
/// Use the value of [`AlignItems`]
Auto,
/// If the parent has [`AlignItems::Center`] only this item will be at the start
FlexStart,
/// If the parent has [`AlignItems::Center`] only this item will be at the end
FlexEnd,
/// If the parent has [`AlignItems::FlexStart`] only this item will be at the center
Center,
/// If the parent has [`AlignItems::Center`] only this item will be at the baseline
Baseline,
/// If the parent has [`AlignItems::Center`] only this item will stretch along the whole cross axis
Stretch,
}
```
Actual behaviour of `AlignSelf` in Bevy main:
<img width="642" alt="align_self" src="https://user-images.githubusercontent.com/27962798/217795178-7a82638f-118d-4474-b7f9-ca27f204731d.PNG">
The white label at the top of each column is the parent node's `AlignItems` setting.
`AlignSelf` is always applied, not (as the documentation states) only when the parent has `AlignItems::Center` or `AlignItems::FlexStart` set.
```rust
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_startup_system(setup)
.run();
}
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn(Camera2dBundle::default());
commands.spawn(NodeBundle {
style: Style {
justify_content: JustifyContent::SpaceAround,
align_items: AlignItems::Center,
size: Size::new(Val::Percent(100.), Val::Percent(100.)),
..Default::default()
},
background_color: BackgroundColor(Color::NAVY),
..Default::default()
}).with_children(|builder| {
for align_items in [
AlignItems::Baseline,
AlignItems::FlexStart,
AlignItems::Center,
AlignItems::FlexEnd,
AlignItems::Stretch,
] {
builder.spawn(NodeBundle {
style: Style {
align_items,
flex_direction: FlexDirection::Column,
justify_content: JustifyContent::SpaceBetween,
size: Size::new(Val::Px(150.), Val::Px(500.)),
..Default::default()
},
background_color: BackgroundColor(Color::DARK_GRAY),
..Default::default()
}).with_children(|builder| {
builder.spawn((
TextBundle {
text: Text::from_section(
format!("AlignItems::{align_items:?}"),
TextStyle {
font: asset_server.load("fonts/FiraSans-Regular.ttf"),
font_size: 16.0,
color: Color::BLACK,
},
),
style: Style {
align_self: AlignSelf::Stretch,
..Default::default()
},
..Default::default()
},
BackgroundColor(Color::WHITE),
));
for align_self in [
AlignSelf::Auto,
AlignSelf::FlexStart,
AlignSelf::Center,
AlignSelf::FlexEnd,
AlignSelf::Baseline,
AlignSelf::Stretch,
] {
builder.spawn((
TextBundle {
text: Text::from_section(
format!("AlignSelf::{align_self:?}"),
TextStyle {
font: asset_server.load("fonts/FiraSans-Regular.ttf"),
font_size: 16.0,
color: Color::WHITE,
},
),
style: Style {
align_self,
..Default::default()
},
..Default::default()
},
BackgroundColor(Color::BLACK),
));
}
});
}
});
}
```
This commit is contained in:
parent
fefe5297ad
commit
2d1dcbff7b
@ -227,7 +227,8 @@ pub struct Style {
|
|||||||
pub flex_wrap: FlexWrap,
|
pub flex_wrap: FlexWrap,
|
||||||
/// How items are aligned according to the cross axis
|
/// How items are aligned according to the cross axis
|
||||||
pub align_items: AlignItems,
|
pub align_items: AlignItems,
|
||||||
/// Like align_items but for only this item
|
/// How this item is aligned according to the cross axis.
|
||||||
|
/// Overrides [`AlignItems`].
|
||||||
pub align_self: AlignSelf,
|
pub align_self: AlignSelf,
|
||||||
/// How to align each line, only applies if flex_wrap is set to
|
/// How to align each line, only applies if flex_wrap is set to
|
||||||
/// [`FlexWrap::Wrap`] and there are multiple lines of items
|
/// [`FlexWrap::Wrap`] and there are multiple lines of items
|
||||||
@ -323,21 +324,22 @@ impl Default for AlignItems {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Works like [`AlignItems`] but applies only to a single item
|
/// How this item is aligned according to the cross axis.
|
||||||
|
/// Overrides [`AlignItems`].
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Reflect)]
|
#[derive(Copy, Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Reflect)]
|
||||||
#[reflect(PartialEq, Serialize, Deserialize)]
|
#[reflect(PartialEq, Serialize, Deserialize)]
|
||||||
pub enum AlignSelf {
|
pub enum AlignSelf {
|
||||||
/// Use the value of [`AlignItems`]
|
/// Use the parent node's [`AlignItems`] value to determine how this item should be aligned
|
||||||
Auto,
|
Auto,
|
||||||
/// If the parent has [`AlignItems::Center`] only this item will be at the start
|
/// This item will be aligned at the start
|
||||||
FlexStart,
|
FlexStart,
|
||||||
/// If the parent has [`AlignItems::Center`] only this item will be at the end
|
/// This item will be aligned at the end
|
||||||
FlexEnd,
|
FlexEnd,
|
||||||
/// If the parent has [`AlignItems::FlexStart`] only this item will be at the center
|
/// This item will be aligned at the center
|
||||||
Center,
|
Center,
|
||||||
/// If the parent has [`AlignItems::Center`] only this item will be at the baseline
|
/// This item will be aligned at the baseline
|
||||||
Baseline,
|
Baseline,
|
||||||
/// If the parent has [`AlignItems::Center`] only this item will stretch along the whole cross axis
|
/// This item will be stretched across the whole cross axis
|
||||||
Stretch,
|
Stretch,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user