From 7a50e9e8fbb8d37e53a42c1dd5936b97463ead53 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 21 Jan 2024 17:56:01 +0100 Subject: Convert `Renderer::Theme` to generic `Widget` type --- widget/src/slider.rs | 61 ++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) (limited to 'widget/src/slider.rs') diff --git a/widget/src/slider.rs b/widget/src/slider.rs index 79b0a7d8..5c3b6384 100644 --- a/widget/src/slider.rs +++ b/widget/src/slider.rs @@ -29,7 +29,7 @@ pub use iced_style::slider::{ /// # Example /// ```no_run /// # type Slider<'a, T, Message> = -/// # iced_widget::Slider<'a, Message, T, iced_widget::renderer::Renderer>; +/// # iced_widget::Slider<'a, Message, T, iced_widget::style::Theme>; /// # /// #[derive(Clone)] /// pub enum Message { @@ -43,10 +43,9 @@ pub use iced_style::slider::{ /// /// ![Slider drawn by Coffee's renderer](https://github.com/hecrj/coffee/blob/bda9818f823dfcb8a7ad0ff4940b4d4b387b5208/images/ui/slider.png?raw=true) #[allow(missing_debug_implementations)] -pub struct Slider<'a, T, Message, Renderer = crate::Renderer> +pub struct Slider<'a, T, Message, Theme = crate::Theme> where - Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { range: RangeInclusive, step: T, @@ -55,15 +54,14 @@ where on_release: Option, width: Length, height: f32, - style: ::Style, + style: Theme::Style, } -impl<'a, T, Message, Renderer> Slider<'a, T, Message, Renderer> +impl<'a, T, Message, Theme> Slider<'a, T, Message, Theme> where T: Copy + From + std::cmp::PartialOrd, Message: Clone, - Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { /// The default height of a [`Slider`]. pub const DEFAULT_HEIGHT: f32 = 22.0; @@ -128,10 +126,7 @@ where } /// Sets the style of the [`Slider`]. - pub fn style( - mut self, - style: impl Into<::Style>, - ) -> Self { + pub fn style(mut self, style: impl Into) -> Self { self.style = style.into(); self } @@ -143,13 +138,13 @@ where } } -impl<'a, T, Message, Renderer> Widget - for Slider<'a, T, Message, Renderer> +impl<'a, T, Message, Theme, Renderer> Widget + for Slider<'a, T, Message, Theme> where T: Copy + Into + num_traits::FromPrimitive, Message: Clone, + Theme: StyleSheet, Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, { fn tag(&self) -> tree::Tag { tree::Tag::of::() @@ -204,7 +199,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, @@ -234,17 +229,17 @@ where } } -impl<'a, T, Message, Renderer> From> - for Element<'a, Message, Renderer> +impl<'a, T, Message, Theme, Renderer> From> + for Element<'a, Message, Theme, Renderer> where - T: 'a + Copy + Into + num_traits::FromPrimitive, - Message: 'a + Clone, - Renderer: 'a + crate::core::Renderer, - Renderer::Theme: StyleSheet, + T: Copy + Into + num_traits::FromPrimitive + 'a, + Message: Clone + 'a, + Theme: StyleSheet + 'a, + Renderer: crate::core::Renderer + 'a, { fn from( - slider: Slider<'a, T, Message, Renderer>, - ) -> Element<'a, Message, Renderer> { + slider: Slider<'a, T, Message, Theme>, + ) -> Element<'a, Message, Theme, Renderer> { Element::new(slider) } } @@ -338,29 +333,29 @@ where } /// Draws a [`Slider`]. -pub fn draw( - renderer: &mut R, +pub fn draw( + renderer: &mut Renderer, layout: Layout<'_>, cursor: mouse::Cursor, state: &State, value: T, range: &RangeInclusive, - style_sheet: &dyn StyleSheet