diff --git a/res/icons/list-add-symbolic.svg b/res/icons/list-add-symbolic.svg new file mode 100644 index 00000000..59b2fb03 --- /dev/null +++ b/res/icons/list-add-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/res/icons/list-remove-symbolic.svg b/res/icons/list-remove-symbolic.svg new file mode 100644 index 00000000..5b9ded7c --- /dev/null +++ b/res/icons/list-remove-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/widget/spin_button.rs b/src/widget/spin_button.rs index 1a2f3e0f..6edfac59 100644 --- a/src/widget/spin_button.rs +++ b/src/widget/spin_button.rs @@ -155,23 +155,26 @@ where Message: Clone + 'static, T: Copy + Sub + Add + PartialOrd, { - let decrement_button = icon::from_name("list-remove-symbolic") - .apply(button::icon) - .on_press((spin_button.on_press)(decrement::( + let make_button = | icon, operation: fn(T,T,T,T)->T | { + #[cfg(target_os = "linux")] + let button = icon::from_name(icon); + + #[cfg(not(target_os = "linux"))] + let button = icon::from_svg_bytes( + include_bytes!(concat!["../../res/icons/", icon ,".svg"]) + ).symbolic(true); + + button.apply(button::icon) + .on_press((spin_button.on_press)(operation( spin_button.value, spin_button.step, spin_button.min, spin_button.max, - ))); + ))) + }; - let increment_button = icon::from_name("list-add-symbolic") - .apply(button::icon) - .on_press((spin_button.on_press)(increment::( - spin_button.value, - spin_button.step, - spin_button.min, - spin_button.max, - ))); + let decrement_button = make_button("list-remove-symbolic", decrement); + let increment_button = make_button("list-add-symbolic", increment); let label = text::title4(spin_button.label) .apply(container) @@ -193,23 +196,26 @@ where Message: Clone + 'static, T: Copy + Sub + Add + PartialOrd, { - let decrement_button = icon::from_name("list-remove-symbolic") - .apply(button::icon) - .on_press((spin_button.on_press)(decrement::( - spin_button.value, - spin_button.step, - spin_button.min, - spin_button.max, - ))); + let make_button = | icon, operation: fn(T,T,T,T)->T | { + #[cfg(target_os = "linux")] + let button = icon::from_name(icon); - let increment_button = icon::from_name("list-add-symbolic") - .apply(button::icon) - .on_press((spin_button.on_press)(increment::( - spin_button.value, - spin_button.step, - spin_button.min, - spin_button.max, - ))); + #[cfg(not(target_os = "linux"))] + let button = icon::from_svg_bytes( + include_bytes!(concat!["../../res/icons/", icon ,".svg"]) + ).symbolic(true); + + button.apply(button::icon) + .on_press((spin_button.on_press)(operation( + spin_button.value, + spin_button.step, + spin_button.min, + spin_button.max, + ))) + }; + + let decrement_button = make_button("list-remove-symbolic", decrement); + let increment_button = make_button("list-add-symbolic", increment); let label = text::title4(spin_button.label) .apply(container) diff --git a/src/widget/warning.rs b/src/widget/warning.rs index 942ffb8b..92fa7178 100644 --- a/src/widget/warning.rs +++ b/src/widget/warning.rs @@ -33,11 +33,21 @@ impl<'a, Message: 'static + Clone> Warning<'a, Message> { pub fn into_widget(self) -> widget::Container<'a, Message, crate::Theme, Renderer> { let label = widget::container(crate::widget::text(self.message)).width(Length::Fill); + #[cfg(target_os = "linux")] let close_button = icon::from_name("window-close-symbolic") .size(16) .apply(widget::button::icon) .on_press_maybe(self.on_close); + #[cfg(not(target_os = "linux"))] + let close_button = icon::from_svg_bytes( + include_bytes!("../../res/icons/window-close-symbolic.svg") + ) + .symbolic(true) + .apply(widget::button::icon) + .icon_size(16) + .on_press_maybe(self.on_close); + widget::row::with_capacity(2) .push(label) .push(close_button)