From d4a87bd394c8341bddcee2e274d3a695da74cf68 Mon Sep 17 00:00:00 2001
From: Mia McMahill <84749759+electricbrass@users.noreply.github.com>
Date: Fri, 16 May 2025 10:00:35 -0500
Subject: [PATCH] fix: embed spin button and warning icons on non-linux systems
---
res/icons/list-add-symbolic.svg | 3 ++
res/icons/list-remove-symbolic.svg | 3 ++
src/widget/spin_button.rs | 59 ++++++++++++------------------
src/widget/warning.rs | 10 +++++
4 files changed, 40 insertions(+), 35 deletions(-)
create mode 100644 res/icons/list-add-symbolic.svg
create mode 100644 res/icons/list-remove-symbolic.svg
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..9a2c59d7 100644
--- a/src/widget/spin_button.rs
+++ b/src/widget/spin_button.rs
@@ -149,29 +149,33 @@ where
}
}
}
+macro_rules! make_button {
+ ($spin_button:expr, $icon:expr, $operation:expr) => {{
+ #[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,
+ )))
+ }};
+}
fn horizontal_variant(spin_button: SpinButton<'_, T, Message>) -> Element<'_, Message>
where
Message: Clone + 'static,
T: Copy + Sub