Fix horizontal text alignment

This commit is contained in:
Héctor Ramón Jiménez 2025-03-11 00:43:51 +01:00
parent 35c0e14452
commit 179a34d37b
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
23 changed files with 141 additions and 67 deletions

View file

@ -87,8 +87,8 @@ impl text::Paragraph for () {
text::Difference::None
}
fn horizontal_alignment(&self) -> alignment::Horizontal {
alignment::Horizontal::Left
fn horizontal_alignment(&self) -> Option<alignment::Horizontal> {
None
}
fn vertical_alignment(&self) -> alignment::Vertical {

View file

@ -34,7 +34,7 @@ pub struct Text<Content = String, Font = crate::Font> {
pub font: Font,
/// The horizontal alignment of the [`Text`].
pub horizontal_alignment: alignment::Horizontal,
pub horizontal_alignment: Option<alignment::Horizontal>,
/// The vertical alignment of the [`Text`].
pub vertical_alignment: alignment::Vertical,

View file

@ -24,7 +24,7 @@ pub trait Paragraph: Sized + Default {
fn compare(&self, text: Text<(), Self::Font>) -> Difference;
/// Returns the horizontal alignment of the [`Paragraph`].
fn horizontal_alignment(&self) -> alignment::Horizontal;
fn horizontal_alignment(&self) -> Option<alignment::Horizontal>;
/// Returns the vertical alignment of the [`Paragraph`].
fn vertical_alignment(&self) -> alignment::Vertical;
@ -108,7 +108,7 @@ impl<P: Paragraph> Plain<P> {
}
/// Returns the horizontal alignment of the [`Paragraph`].
pub fn horizontal_alignment(&self) -> alignment::Horizontal {
pub fn horizontal_alignment(&self) -> Option<alignment::Horizontal> {
self.raw.horizontal_alignment()
}

View file

@ -67,7 +67,7 @@ where
line_height: LineHeight,
width: Length,
height: Length,
horizontal_alignment: alignment::Horizontal,
horizontal_alignment: Option<alignment::Horizontal>,
vertical_alignment: alignment::Vertical,
font: Option<Renderer::Font>,
shaping: Shaping,
@ -89,7 +89,7 @@ where
font: None,
width: Length::Shrink,
height: Length::Shrink,
horizontal_alignment: alignment::Horizontal::Left,
horizontal_alignment: None,
vertical_alignment: alignment::Vertical::Top,
shaping: Shaping::default(),
wrapping: Wrapping::default(),
@ -140,7 +140,7 @@ where
mut self,
alignment: impl Into<alignment::Horizontal>,
) -> Self {
self.horizontal_alignment = alignment.into();
self.horizontal_alignment = Some(alignment.into());
self
}
@ -290,7 +290,7 @@ pub fn layout<Renderer>(
line_height: LineHeight,
size: Option<Pixels>,
font: Option<Renderer::Font>,
horizontal_alignment: alignment::Horizontal,
horizontal_alignment: Option<alignment::Horizontal>,
vertical_alignment: alignment::Vertical,
shaping: Shaping,
wrapping: Wrapping,
@ -345,9 +345,9 @@ pub fn draw<Renderer>(
let bounds = layout.bounds();
let x = match paragraph.horizontal_alignment() {
alignment::Horizontal::Left => bounds.x,
alignment::Horizontal::Center => bounds.center_x(),
alignment::Horizontal::Right => bounds.x + bounds.width,
None | Some(alignment::Horizontal::Left) => bounds.x,
Some(alignment::Horizontal::Center) => bounds.center_x(),
Some(alignment::Horizontal::Right) => bounds.x + bounds.width,
};
let y = match paragraph.vertical_alignment() {