improv(icon): use correct size variant for Named

Update`Icon::size` method to correctly handle `Named` icons by using the provided size retroactively.
This commit is contained in:
Vukašin Vojinović 2025-09-09 15:30:12 +02:00 committed by Michael Murphy
parent ac18f009b4
commit 39a5607400

View file

@ -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| {