diff options
Diffstat (limited to 'widget')
-rw-r--r-- | widget/src/pick_list.rs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/widget/src/pick_list.rs b/widget/src/pick_list.rs index bc2c9066..8c445dda 100644 --- a/widget/src/pick_list.rs +++ b/widget/src/pick_list.rs @@ -360,6 +360,8 @@ pub struct Icon<Font> { pub code_point: char, /// Font size of the content. pub size: Option<f32>, + /// Line height of the content. + pub line_height: text::LineHeight, /// The shaping strategy of the icon. pub shaping: text::Shaping, } @@ -632,22 +634,31 @@ pub fn draw<'a, T, Renderer>( Renderer::ICON_FONT, Renderer::ARROW_DOWN_ICON, *size, + text::LineHeight::default(), text::Shaping::Basic, )), Handle::Static(Icon { font, code_point, size, + line_height, shaping, - }) => Some((*font, *code_point, *size, *shaping)), + }) => Some((*font, *code_point, *size, *line_height, *shaping)), Handle::Dynamic { open, closed } => { if state().is_open { - Some((open.font, open.code_point, open.size, open.shaping)) + Some(( + open.font, + open.code_point, + open.size, + open.line_height, + open.shaping, + )) } else { Some(( closed.font, closed.code_point, closed.size, + closed.line_height, closed.shaping, )) } @@ -655,19 +666,19 @@ pub fn draw<'a, T, Renderer>( Handle::None => None, }; - if let Some((font, code_point, size, shaping)) = handle { + if let Some((font, code_point, size, line_height, shaping)) = handle { let size = size.unwrap_or_else(|| renderer.default_size()); renderer.fill_text(Text { content: &code_point.to_string(), size, - line_height: text::LineHeight::default(), + line_height, font, color: style.handle_color, bounds: Rectangle { x: bounds.x + bounds.width - padding.horizontal(), y: bounds.center_y(), - height: size * 1.2, + height: f32::from(line_height.to_absolute(Pixels(size))), ..bounds }, horizontal_alignment: alignment::Horizontal::Right, @@ -695,7 +706,9 @@ pub fn draw<'a, T, Renderer>( x: bounds.x + padding.left, y: bounds.center_y(), width: bounds.width - padding.horizontal(), - height: text_size * 1.2, + height: f32::from( + text_line_height.to_absolute(Pixels(text_size)), + ), }, horizontal_alignment: alignment::Horizontal::Left, vertical_alignment: alignment::Vertical::Center, |