diff --git a/src/theme/style/button.rs b/src/theme/style/button.rs index f41237a2..d6718ba4 100644 --- a/src/theme/style/button.rs +++ b/src/theme/style/button.rs @@ -20,6 +20,7 @@ pub enum Button { Destructive, Link, Icon, + IconInheritColors, IconVertical, #[default] Standard, @@ -53,14 +54,16 @@ pub fn appearance( appearance.icon_color = icon; } - Button::Icon | Button::IconVertical => { + Button::Icon | Button::IconInheritColors | Button::IconVertical => { if let Button::IconVertical = style { corner_radii = &cosmic.corner_radii.radius_m; } let (background, text, icon) = color(&cosmic.icon_button); appearance.background = Some(Background::Color(background)); - if focused { + + if let Button::IconInheritColors = style { + } else if focused { appearance.text_color = cosmic.accent.on.into(); appearance.icon_color = Some(cosmic.accent.on.into()); } else { diff --git a/src/widget/button/icon.rs b/src/widget/button/icon.rs index 9a70a510..1de2c84a 100644 --- a/src/widget/button/icon.rs +++ b/src/widget/button/icon.rs @@ -124,6 +124,11 @@ impl<'a, Message> Button<'a, Message> { self } + pub fn inherit_colors(mut self) -> Self { + self.style = Style::IconInheritColors; + self + } + pub fn vertical(mut self, vertical: bool) -> Self { self.variant.vertical = vertical; self.style = Style::IconVertical; @@ -162,6 +167,8 @@ impl<'a, Message: Clone + 'static> From> for Element<'a, Mes let button = if builder.variant.vertical { crate::widget::column::with_children(content) .padding(builder.padding) + // .width(builder.width) + // .height(builder.height) .spacing(builder.spacing) .align_items(Alignment::Center) .apply(button) diff --git a/src/widget/header_bar.rs b/src/widget/header_bar.rs index 5c4f4627..2152e6c0 100644 --- a/src/widget/header_bar.rs +++ b/src/widget/header_bar.rs @@ -167,8 +167,8 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { let icon = |name, size, on_press| { widget::icon::from_name(name) .size(size) - .handle() .apply(widget::button::icon) + .inherit_colors() .on_press(on_press) };