summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-31 17:42:43 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-31 17:42:43 +0700
commit0c76e0307ff7d4450c354812f8a25047f24948b4 (patch)
treec4ab989d99c65e2099a39d1e2f7a29db4816443b
parenteed19dcf81334d0849744f1918ba880d5a7acc1c (diff)
downloadiced-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.rs2
-rw-r--r--examples/styling/src/main.rs6
-rw-r--r--native/src/widget/slider.rs9
-rw-r--r--style/src/slider.rs13
-rw-r--r--web/src/widget/slider.rs7
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
}