diff --git a/src/widget/icon/mod.rs b/src/widget/icon/mod.rs index 5a90d35..8b21b6d 100644 --- a/src/widget/icon/mod.rs +++ b/src/widget/icon/mod.rs @@ -43,6 +43,7 @@ pub struct Icon { #[setters(skip)] handle: Handle, class: crate::theme::Svg, + #[setters(skip)] pub(super) size: u16, content_fit: ContentFit, #[setters(strip_option)] @@ -72,6 +73,22 @@ impl Icon { None } + #[must_use] + pub fn size(mut self, size: u16) -> Self { + match &self.handle.data { + // ensures correct icon size variant selection + Data::Name(named) => { + let mut new_named = named.clone(); + new_named.size = Some(size); + self.handle = new_named.handle(); + } + _ => { + self.size = size; + } + } + self + } + #[must_use] fn view<'a, Message: 'a>(self) -> Element<'a, Message> { let from_image = |handle| {