Reintroduce Box for style_sheet in Slider
This commit is contained in:
parent
eed19dcf81
commit
0c76e0307f
5 changed files with 26 additions and 11 deletions
|
|
@ -853,7 +853,7 @@ impl Controls {
|
||||||
speed as f32,
|
speed as f32,
|
||||||
Message::SpeedChanged,
|
Message::SpeedChanged,
|
||||||
)
|
)
|
||||||
.style(&style::Slider),
|
.style(style::Slider),
|
||||||
)
|
)
|
||||||
.push(Text::new(format!("x{}", speed)).size(16));
|
.push(Text::new(format!("x{}", speed)).size(16));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ impl Sandbox for Styling {
|
||||||
self.slider_value,
|
self.slider_value,
|
||||||
Message::SliderChanged,
|
Message::SliderChanged,
|
||||||
)
|
)
|
||||||
.style(self.theme.into());
|
.style(self.theme);
|
||||||
|
|
||||||
let progress_bar =
|
let progress_bar =
|
||||||
ProgressBar::new(0.0..=100.0, self.slider_value).style(self.theme);
|
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 {
|
fn from(theme: Theme) -> Self {
|
||||||
match theme {
|
match theme {
|
||||||
Theme::Light => Default::default(),
|
Theme::Light => Default::default(),
|
||||||
Theme::Dark => &dark::Slider,
|
Theme::Dark => dark::Slider.into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ pub struct Slider<'a, T, Message> {
|
||||||
on_release: Option<Message>,
|
on_release: Option<Message>,
|
||||||
width: Length,
|
width: Length,
|
||||||
height: u16,
|
height: u16,
|
||||||
style_sheet: &'a dyn StyleSheet,
|
style_sheet: Box<dyn StyleSheet + 'a>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T, Message> Slider<'a, T, Message>
|
impl<'a, T, Message> Slider<'a, T, Message>
|
||||||
|
|
@ -127,8 +127,11 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the style of the [`Slider`].
|
/// Sets the style of the [`Slider`].
|
||||||
pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self {
|
pub fn style(
|
||||||
self.style_sheet = style_sheet;
|
mut self,
|
||||||
|
style_sheet: impl Into<Box<dyn StyleSheet + 'a>>,
|
||||||
|
) -> Self {
|
||||||
|
self.style_sheet = style_sheet.into();
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ pub struct Slider<'a, T, Message> {
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
width: Length,
|
width: Length,
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
style_sheet: &'a dyn StyleSheet,
|
style_sheet: Box<dyn StyleSheet + 'a>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T, Message> Slider<'a, T, Message>
|
impl<'a, T, Message> Slider<'a, T, Message>
|
||||||
|
|
@ -96,7 +96,10 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the style of the [`Slider`].
|
/// 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.style_sheet = style_sheet.into();
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue