summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/styling/src/main.rs6
-rw-r--r--native/src/widget/checkbox.rs9
-rw-r--r--style/src/checkbox.rs13
-rw-r--r--web/src/widget/checkbox.rs9
4 files changed, 26 insertions, 11 deletions
diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs
index 9e31c383..e8829b53 100644
--- a/examples/styling/src/main.rs
+++ b/examples/styling/src/main.rs
@@ -108,7 +108,7 @@ impl Sandbox for Styling {
"Check me!",
Message::CheckboxToggled,
)
- .style(self.theme.into());
+ .style(self.theme);
let toggler = Toggler::new(
self.toggler_value,
@@ -239,11 +239,11 @@ mod style {
}
}
- impl From<Theme> for &'static dyn checkbox::StyleSheet {
+ impl<'a> From<Theme> for Box<dyn checkbox::StyleSheet + 'a> {
fn from(theme: Theme) -> Self {
match theme {
Theme::Light => Default::default(),
- Theme::Dark => &dark::Checkbox,
+ Theme::Dark => dark::Checkbox.into(),
}
}
}
diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs
index 624e01d6..b19a0a25 100644
--- a/native/src/widget/checkbox.rs
+++ b/native/src/widget/checkbox.rs
@@ -44,7 +44,7 @@ pub struct Checkbox<'a, Message, Renderer: text::Renderer> {
text_size: Option<u16>,
font: Renderer::Font,
text_color: Option<Color>,
- style_sheet: &'a dyn StyleSheet,
+ style_sheet: Box<dyn StyleSheet + 'a>,
}
impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {
@@ -119,8 +119,11 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {
}
/// Sets the style of the [`Checkbox`].
- pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self {
- self.style_sheet = style_sheet;
+ pub fn style(
+ mut self,
+ style_sheet: impl Into<Box<dyn StyleSheet + 'a>>,
+ ) -> Self {
+ self.style_sheet = style_sheet.into();
self
}
}
diff --git a/style/src/checkbox.rs b/style/src/checkbox.rs
index 4c88faaa..09f997fb 100644
--- a/style/src/checkbox.rs
+++ b/style/src/checkbox.rs
@@ -39,8 +39,17 @@ impl StyleSheet for Default {
}
}
-impl std::default::Default for &'static dyn StyleSheet {
+impl std::default::Default for Box<dyn StyleSheet> {
fn default() -> Self {
- &Default
+ Box::new(Default)
+ }
+}
+
+impl<'a, T> From<T> for Box<dyn StyleSheet + 'a>
+where
+ T: StyleSheet + 'a,
+{
+ fn from(style_sheet: T) -> Self {
+ Box::new(style_sheet)
}
}
diff --git a/web/src/widget/checkbox.rs b/web/src/widget/checkbox.rs
index 095ef47d..844bf862 100644
--- a/web/src/widget/checkbox.rs
+++ b/web/src/widget/checkbox.rs
@@ -31,7 +31,7 @@ pub struct Checkbox<'a, Message> {
id: Option<String>,
width: Length,
#[allow(dead_code)]
- style_sheet: &'a dyn StyleSheet,
+ style_sheet: Box<dyn StyleSheet + 'a>,
}
impl<'a, Message> Checkbox<'a, Message> {
@@ -64,8 +64,11 @@ impl<'a, Message> Checkbox<'a, Message> {
}
/// Sets the style of the [`Checkbox`].
- pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self {
- self.style_sheet = style_sheet;
+ pub fn style(
+ mut self,
+ style_sheet: impl Into<Box<dyn StyleSheet + 'a>>,
+ ) -> Self {
+ self.style_sheet = style_sheet.into();
self
}