From bbff06b4621ae586b951564c8cc4bf95608bbb81 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 14 Feb 2023 07:02:33 +0100 Subject: Use `char` instead of `String` for `pick_list::Icon` --- native/src/widget/pick_list.rs | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'native') diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index b9f6f088..b96ffac2 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -329,25 +329,21 @@ impl Handle { fn content>( &self, is_open: bool, - ) -> Option<(Font, String, Option)> { + ) -> Option<(Font, char, Option)> { match self { - Self::Arrow { size } => Some(( - Renderer::ICON_FONT, - Renderer::ARROW_DOWN_ICON.to_string(), - *size, - )), - Self::Static(Icon { font, text, size }) => { - Some((font.clone(), text.clone(), *size)) + Self::Arrow { size } => { + Some((Renderer::ICON_FONT, Renderer::ARROW_DOWN_ICON, *size)) } + Self::Static(Icon { + font, + code_point, + size, + }) => Some((font.clone(), *code_point, *size)), Self::Dynamic { open, closed } => { if is_open { - Some((open.font.clone(), open.text.clone(), open.size)) + Some((open.font.clone(), open.code_point, open.size)) } else { - Some(( - closed.font.clone(), - closed.text.clone(), - closed.size, - )) + Some((closed.font.clone(), closed.code_point, closed.size)) } } Self::None => None, @@ -358,10 +354,10 @@ impl Handle { /// The icon of a [`Handle`]. #[derive(Debug, Clone, PartialEq, Eq)] pub struct Icon { - /// Font that will be used to display the `text`, + /// Font that will be used to display the `code_point`, pub font: Font, - /// Text that will be shown. - pub text: String, + /// The unicode code point that will be used as the icon. + pub code_point: char, /// Font size of the content. pub size: Option, } @@ -624,12 +620,13 @@ pub fn draw<'a, T, Renderer>( style.background, ); - if let Some((font, text, size)) = handle.content::(state.is_open) + if let Some((font, code_point, size)) = + handle.content::(state.is_open) { let size = f32::from(size.unwrap_or_else(|| renderer.default_size())); renderer.fill_text(Text { - content: &text, + content: &code_point.to_string(), size, font, color: style.handle_color, -- cgit