diff options
author | 2021-10-31 17:42:43 +0700 | |
---|---|---|
committer | 2021-10-31 17:42:43 +0700 | |
commit | 0c76e0307ff7d4450c354812f8a25047f24948b4 (patch) | |
tree | c4ab989d99c65e2099a39d1e2f7a29db4816443b | |
parent | eed19dcf81334d0849744f1918ba880d5a7acc1c (diff) | |
download | iced-0c76e0307ff7d4450c354812f8a25047f24948b4.tar.gz iced-0c76e0307ff7d4450c354812f8a25047f24948b4.tar.bz2 iced-0c76e0307ff7d4450c354812f8a25047f24948b4.zip |
Reintroduce `Box` for `style_sheet` in `Slider`
-rw-r--r-- | examples/game_of_life/src/main.rs | 2 | ||||
-rw-r--r-- | examples/styling/src/main.rs | 6 | ||||
-rw-r--r-- | native/src/widget/slider.rs | 9 | ||||
-rw-r--r-- | style/src/slider.rs | 13 | ||||
-rw-r--r-- | web/src/widget/slider.rs | 7 |
5 files changed, 26 insertions, 11 deletions
diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs index 01dcadc6..50112618 100644 --- a/examples/game_of_life/src/main.rs +++ b/examples/game_of_life/src/main.rs @@ -853,7 +853,7 @@ impl Controls { speed as f32, Message::SpeedChanged, ) - .style(&style::Slider), + .style(style::Slider), ) .push(Text::new(format!("x{}", speed)).size(16)); diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index a0ba2607..b33e26de 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -90,7 +90,7 @@ impl Sandbox for Styling { self.slider_value, Message::SliderChanged, ) - .style(self.theme.into()); + .style(self.theme); let progress_bar = ProgressBar::new(0.0..=100.0, self.slider_value).style(self.theme); @@ -221,11 +221,11 @@ mod style { } } - impl From<Theme> for &'static dyn slider::StyleSheet { + impl<'a> From<Theme> for Box<dyn slider::StyleSheet + 'a> { fn from(theme: Theme) -> Self { match theme { Theme::Light => Default::default(), - Theme::Dark => &dark::Slider, + Theme::Dark => dark::Slider.into(), } } } diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index 977a5240..ee9db6cf 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -50,7 +50,7 @@ pub struct Slider<'a, T, Message> { on_release: Option<Message>, width: Length, height: u16, - style_sheet: &'a dyn StyleSheet, + style_sheet: Box<dyn StyleSheet + 'a>, } impl<'a, T, Message> Slider<'a, T, Message> @@ -127,8 +127,11 @@ where } /// Sets the style of the [`Slider`]. - 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/slider.rs b/style/src/slider.rs index c6791c3d..918e7753 100644 --- a/style/src/slider.rs +++ b/style/src/slider.rs @@ -79,8 +79,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/slider.rs b/web/src/widget/slider.rs index 7ec84475..8cbf5bd0 100644 --- a/web/src/widget/slider.rs +++ b/web/src/widget/slider.rs @@ -41,7 +41,7 @@ pub struct Slider<'a, T, Message> { #[allow(dead_code)] width: Length, #[allow(dead_code)] - style_sheet: &'a dyn StyleSheet, + style_sheet: Box<dyn StyleSheet + 'a>, } impl<'a, T, Message> Slider<'a, T, Message> @@ -96,7 +96,10 @@ where } /// Sets the style of the [`Slider`]. - pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self { + pub fn style( + mut self, + style_sheet: impl Into<Box<dyn StyleSheet + 'a>>, + ) -> Self { self.style_sheet = style_sheet.into(); self } |