Skip to content

Commit d4a87bd

Browse files
fix: embed spin button and warning icons on non-linux systems
1 parent c42b8ff commit d4a87bd

4 files changed

Lines changed: 40 additions & 35 deletions

File tree

res/icons/list-add-symbolic.svg

Lines changed: 3 additions & 0 deletions
Loading

res/icons/list-remove-symbolic.svg

Lines changed: 3 additions & 0 deletions
Loading

src/widget/spin_button.rs

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -149,29 +149,33 @@ where
149149
}
150150
}
151151
}
152+
macro_rules! make_button {
153+
($spin_button:expr, $icon:expr, $operation:expr) => {{
154+
#[cfg(target_os = "linux")]
155+
let button = icon::from_name($icon);
156+
157+
#[cfg(not(target_os = "linux"))]
158+
let button = icon::from_svg_bytes(
159+
include_bytes!(concat!["../../res/icons/", $icon ,".svg"])
160+
).symbolic(true);
161+
162+
button.apply(button::icon)
163+
.on_press(($spin_button.on_press)($operation(
164+
$spin_button.value,
165+
$spin_button.step,
166+
$spin_button.min,
167+
$spin_button.max,
168+
)))
169+
}};
170+
}
152171

153172
fn horizontal_variant<T, Message>(spin_button: SpinButton<'_, T, Message>) -> Element<'_, Message>
154173
where
155174
Message: Clone + 'static,
156175
T: Copy + Sub<Output = T> + Add<Output = T> + PartialOrd,
157176
{
158-
let decrement_button = icon::from_name("list-remove-symbolic")
159-
.apply(button::icon)
160-
.on_press((spin_button.on_press)(decrement::<T>(
161-
spin_button.value,
162-
spin_button.step,
163-
spin_button.min,
164-
spin_button.max,
165-
)));
166-
167-
let increment_button = icon::from_name("list-add-symbolic")
168-
.apply(button::icon)
169-
.on_press((spin_button.on_press)(increment::<T>(
170-
spin_button.value,
171-
spin_button.step,
172-
spin_button.min,
173-
spin_button.max,
174-
)));
177+
let decrement_button = make_button!(spin_button, "list-remove-symbolic", decrement);
178+
let increment_button = make_button!(spin_button, "list-add-symbolic", increment);
175179

176180
let label = text::title4(spin_button.label)
177181
.apply(container)
@@ -193,23 +197,8 @@ where
193197
Message: Clone + 'static,
194198
T: Copy + Sub<Output = T> + Add<Output = T> + PartialOrd,
195199
{
196-
let decrement_button = icon::from_name("list-remove-symbolic")
197-
.apply(button::icon)
198-
.on_press((spin_button.on_press)(decrement::<T>(
199-
spin_button.value,
200-
spin_button.step,
201-
spin_button.min,
202-
spin_button.max,
203-
)));
204-
205-
let increment_button = icon::from_name("list-add-symbolic")
206-
.apply(button::icon)
207-
.on_press((spin_button.on_press)(increment::<T>(
208-
spin_button.value,
209-
spin_button.step,
210-
spin_button.min,
211-
spin_button.max,
212-
)));
200+
let decrement_button = make_button!(spin_button, "list-remove-symbolic", decrement);
201+
let increment_button = make_button!(spin_button, "list-add-symbolic", increment);
213202

214203
let label = text::title4(spin_button.label)
215204
.apply(container)
@@ -263,4 +252,4 @@ mod tests {
263252
fn decrement() {
264253
assert_eq!(super::decrement(0i32, 10, 15, 35), 15);
265254
}
266-
}
255+
}

src/widget/warning.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,21 @@ impl<'a, Message: 'static + Clone> Warning<'a, Message> {
3333
pub fn into_widget(self) -> widget::Container<'a, Message, crate::Theme, Renderer> {
3434
let label = widget::container(crate::widget::text(self.message)).width(Length::Fill);
3535

36+
#[cfg(target_os = "linux")]
3637
let close_button = icon::from_name("window-close-symbolic")
3738
.size(16)
3839
.apply(widget::button::icon)
3940
.on_press_maybe(self.on_close);
4041

42+
#[cfg(not(target_os = "linux"))]
43+
let close_button = icon::from_svg_bytes(
44+
include_bytes!("../../res/icons/window-close-symbolic.svg")
45+
)
46+
.symbolic(true)
47+
.apply(widget::button::icon)
48+
.icon_size(16)
49+
.on_press_maybe(self.on_close);
50+
4151
widget::row::with_capacity(2)
4252
.push(label)
4353
.push(close_button)

0 commit comments

Comments
 (0)