diff options
| author | 2024-03-12 15:45:21 +0100 | |
|---|---|---|
| committer | 2024-03-12 15:47:34 +0100 | |
| commit | 7a5f5b0be779e5128de05fa779693fe65e81c1e6 (patch) | |
| tree | 53172740bd36a2d440d9c0b5682890cf63a60ad6 /widget | |
| parent | fd7a23ca47b556ad82f2a8a9e3f849deb9f72f1b (diff) | |
| download | iced-7a5f5b0be779e5128de05fa779693fe65e81c1e6.tar.gz iced-7a5f5b0be779e5128de05fa779693fe65e81c1e6.tar.bz2 iced-7a5f5b0be779e5128de05fa779693fe65e81c1e6.zip  | |
Use closures for `ProgressBar::style`
Diffstat (limited to '')
| -rw-r--r-- | widget/src/helpers.rs | 6 | ||||
| -rw-r--r-- | widget/src/progress_bar.rs | 36 | 
2 files changed, 21 insertions, 21 deletions
diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 2606826d..b23e3cb9 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -340,12 +340,12 @@ where  ///   * the current value of the [`ProgressBar`].  ///  /// [`ProgressBar`]: crate::ProgressBar -pub fn progress_bar<Theme>( +pub fn progress_bar<'a, Theme>(      range: RangeInclusive<f32>,      value: f32, -) -> ProgressBar<Theme> +) -> ProgressBar<'a, Theme>  where -    Theme: progress_bar::DefaultStyle, +    Theme: progress_bar::DefaultStyle + 'a,  {      ProgressBar::new(range, value)  } diff --git a/widget/src/progress_bar.rs b/widget/src/progress_bar.rs index 7b0ea63f..38d8da85 100644 --- a/widget/src/progress_bar.rs +++ b/widget/src/progress_bar.rs @@ -13,7 +13,7 @@ use std::ops::RangeInclusive;  ///  /// # Example  /// ```no_run -/// # type ProgressBar = iced_widget::ProgressBar; +/// # type ProgressBar<'a> = iced_widget::ProgressBar<'a>;  /// #  /// let value = 50.0;  /// @@ -22,15 +22,15 @@ use std::ops::RangeInclusive;  ///  ///   #[allow(missing_debug_implementations)] -pub struct ProgressBar<Theme = crate::Theme> { +pub struct ProgressBar<'a, Theme = crate::Theme> {      range: RangeInclusive<f32>,      value: f32,      width: Length,      height: Option<Length>, -    style: Style<Theme>, +    style: Style<'a, Theme>,  } -impl<Theme> ProgressBar<Theme> { +impl<'a, Theme> ProgressBar<'a, Theme> {      /// The default height of a [`ProgressBar`].      pub const DEFAULT_HEIGHT: f32 = 30.0; @@ -41,14 +41,14 @@ impl<Theme> ProgressBar<Theme> {      ///   * the current value of the [`ProgressBar`]      pub fn new(range: RangeInclusive<f32>, value: f32) -> Self      where -        Theme: DefaultStyle, +        Theme: DefaultStyle + 'a,      {          ProgressBar {              value: value.clamp(*range.start(), *range.end()),              range,              width: Length::Fill,              height: None, -            style: Theme::default_style(), +            style: Box::new(Theme::default_style),          }      } @@ -65,14 +65,14 @@ impl<Theme> ProgressBar<Theme> {      }      /// Sets the style of the [`ProgressBar`]. -    pub fn style(mut self, style: fn(&Theme) -> Appearance) -> Self { -        self.style = style.into(); +    pub fn style(mut self, style: impl Fn(&Theme) -> Appearance + 'a) -> Self { +        self.style = Box::new(style);          self      }  } -impl<Message, Theme, Renderer> Widget<Message, Theme, Renderer> -    for ProgressBar<Theme> +impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> +    for ProgressBar<'a, Theme>  where      Renderer: crate::core::Renderer,  { @@ -143,7 +143,7 @@ where      }  } -impl<'a, Message, Theme, Renderer> From<ProgressBar<Theme>> +impl<'a, Message, Theme, Renderer> From<ProgressBar<'a, Theme>>      for Element<'a, Message, Theme, Renderer>  where      Message: 'a, @@ -151,7 +151,7 @@ where      Renderer: 'a + crate::core::Renderer,  {      fn from( -        progress_bar: ProgressBar<Theme>, +        progress_bar: ProgressBar<'a, Theme>,      ) -> Element<'a, Message, Theme, Renderer> {          Element::new(progress_bar)      } @@ -169,23 +169,23 @@ pub struct Appearance {  }  /// The style of a [`ProgressBar`]. -pub type Style<Theme> = fn(&Theme) -> Appearance; +pub type Style<'a, Theme> = Box<dyn Fn(&Theme) -> Appearance + 'a>;  /// The default style of a [`ProgressBar`].  pub trait DefaultStyle {      /// Returns the default style of a [`ProgressBar`]. -    fn default_style() -> Style<Self>; +    fn default_style(&self) -> Appearance;  }  impl DefaultStyle for Theme { -    fn default_style() -> Style<Self> { -        primary +    fn default_style(&self) -> Appearance { +        primary(self)      }  }  impl DefaultStyle for Appearance { -    fn default_style() -> Style<Self> { -        |appearance| *appearance +    fn default_style(&self) -> Appearance { +        *self      }  }  | 
