feat: Themable SVGs, applied to window controls

This commit is contained in:
Michael Aaron Murphy 2022-11-01 13:06:00 +01:00
parent 947532413a
commit 4a899189e6
4 changed files with 35 additions and 2 deletions

View file

@ -108,8 +108,9 @@ impl<Message: Clone> Component<Message, Renderer> for HeaderBar<Message> {
let icon = |name, size, on_press| {
super::icon(name, size)
.style(crate::theme::Svg::Accent)
.apply(widget::button)
.style(theme::Button::Primary)
.style(theme::Button::Text)
.on_press(on_press)
};

View file

@ -1,6 +1,10 @@
use iced::{widget::svg, Length};
pub fn icon(name: &str, size: u16) -> svg::Svg {
pub fn icon<Renderer>(name: &str, size: u16) -> svg::Svg<Renderer>
where
Renderer: iced_native::svg::Renderer,
Renderer::Theme: iced_native::svg::StyleSheet,
{
let handle = match freedesktop_icons::lookup(name)
.with_size(size)
.with_theme("Pop")

View file

@ -98,6 +98,7 @@ where
<<Renderer as iced_native::Renderer>::Theme as container::StyleSheet>::Style:
From<theme::Container>,
<<Renderer as iced_native::Renderer>::Theme as text::StyleSheet>::Style: From<theme::Text>,
Renderer::Theme: iced_native::svg::StyleSheet
{
type State = NavBarState;
type Event = NavBarEvent;
@ -231,6 +232,7 @@ where
<<Renderer as iced_native::Renderer>::Theme as container::StyleSheet>::Style:
From<theme::Container>,
<<Renderer as iced_native::Renderer>::Theme as text::StyleSheet>::Style: From<theme::Text>,
Renderer::Theme: iced_native::svg::StyleSheet
{
fn from(nav_bar: NavBar<'a, Message>) -> Self {
iced_lazy::component(nav_bar)