Add text_shaping method to combo_box widget

This commit is contained in:
MYT 2025-01-01 13:03:38 +00:00 • committed by Héctor Ramón Jiménez
parent bbf936237d
commit d5e02408bb
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 17 additions and 4 deletions

View file

@ -84,18 +84,20 @@ pub enum Language {
French, French,
German, German,
Italian, Italian,
Japanese,
Portuguese, Portuguese,
Spanish, Spanish,
Other, Other,
} }
impl Language { impl Language {
const ALL: [Language; 8] = [ const ALL: [Language; 9] = [
Language::Danish, Language::Danish,
Language::English, Language::English,
Language::French, Language::French,
Language::German, Language::German,
Language::Italian, Language::Italian,
Language::Japanese,
Language::Portuguese, Language::Portuguese,
Language::Spanish, Language::Spanish,
Language::Other, Language::Other,
@ -108,6 +110,7 @@ impl Language {
Language::French => "Salut!", Language::French => "Salut!",
Language::German => "Hallo!", Language::German => "Hallo!",
Language::Italian => "Ciao!", Language::Italian => "Ciao!",
Language::Japanese => "こんにちは!",
Language::Portuguese => "Olá!", Language::Portuguese => "Olá!",
Language::Spanish => "¡Hola!", Language::Spanish => "¡Hola!",
Language::Other => "... hello?", Language::Other => "... hello?",
@ -126,6 +129,7 @@ impl std::fmt::Display for Language {
Language::French => "French", Language::French => "French",
Language::German => "German", Language::German => "German",
Language::Italian => "Italian", Language::Italian => "Italian",
Language::Japanese => "日本語",
Language::Portuguese => "Portuguese", Language::Portuguese => "Portuguese",
Language::Spanish => "Spanish", Language::Spanish => "Spanish",
Language::Other => "Some other language", Language::Other => "Some other language",

View file

@ -149,9 +149,10 @@ pub struct ComboBox<
on_open: Option<Message>, on_open: Option<Message>,
on_close: Option<Message>, on_close: Option<Message>,
on_input: Option<Box<dyn Fn(String) -> Message>>, on_input: Option<Box<dyn Fn(String) -> Message>>,
menu_class: <Theme as menu::Catalog>::Class<'a>,
padding: Padding, padding: Padding,
size: Option<f32>, size: Option<f32>,
text_shaping: text::Shaping,
menu_class: <Theme as menu::Catalog>::Class<'a>,
menu_height: Length, menu_height: Length,
} }
@ -186,9 +187,10 @@ where
on_input: None, on_input: None,
on_open: None, on_open: None,
on_close: None, on_close: None,
menu_class: <Theme as Catalog>::default_menu(),
padding: text_input::DEFAULT_PADDING, padding: text_input::DEFAULT_PADDING,
size: None, size: None,
text_shaping: text::Shaping::default(),
menu_class: <Theme as Catalog>::default_menu(),
menu_height: Length::Shrink, menu_height: Length::Shrink,
} }
} }
@ -281,6 +283,12 @@ where
self self
} }
/// Sets the [`text::Shaping`] strategy of the [`ComboBox`].
pub fn text_shaping(mut self, shaping: text::Shaping) -> Self {
self.text_shaping = shaping;
self
}
/// Sets the style of the input of the [`ComboBox`]. /// Sets the style of the input of the [`ComboBox`].
#[must_use] #[must_use]
pub fn input_style( pub fn input_style(
@ -902,7 +910,8 @@ where
&self.menu_class, &self.menu_class,
) )
.width(bounds.width) .width(bounds.width)
.padding(self.padding); .padding(self.padding)
.text_shaping(self.text_shaping);
if let Some(font) = self.font { if let Some(font) = self.font {
menu = menu.font(font); menu = menu.font(font);