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/vertical_slider.rs | 56 ++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 30 deletions(-) (limited to 'widget/src/vertical_slider.rs') diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs index 52428c10..d3086a81 100644 --- a/widget/src/vertical_slider.rs +++ b/widget/src/vertical_slider.rs @@ -28,7 +28,7 @@ use crate::core::{ /// # Example /// ```no_run /// # type VerticalSlider<'a, T, Message> = -/// # iced_widget::VerticalSlider<'a, T, Message, iced_widget::renderer::Renderer>; +/// # iced_widget::VerticalSlider<'a, T, Message, iced_widget::style::Theme>; /// # /// #[derive(Clone)] /// pub enum Message { @@ -40,10 +40,9 @@ use crate::core::{ /// VerticalSlider::new(0.0..=100.0, value, Message::SliderChanged); /// ``` #[allow(missing_debug_implementations)] -pub struct VerticalSlider<'a, T, Message, Renderer = crate::Renderer> +pub struct VerticalSlider<'a, T, Message, Theme = crate::Theme> where - Renderer: core::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { range: RangeInclusive, step: T, @@ -52,15 +51,14 @@ where on_release: Option, width: f32, height: Length, - style: ::Style, + style: Theme::Style, } -impl<'a, T, Message, Renderer> VerticalSlider<'a, T, Message, Renderer> +impl<'a, T, Message, Theme> VerticalSlider<'a, T, Message, Theme> where T: Copy + From + std::cmp::PartialOrd, Message: Clone, - Renderer: core::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { /// The default width of a [`VerticalSlider`]. pub const DEFAULT_WIDTH: f32 = 22.0; @@ -125,10 +123,7 @@ where } /// Sets the style of the [`VerticalSlider`]. - pub fn style( - mut self, - style: impl Into<::Style>, - ) -> Self { + pub fn style(mut self, style: impl Into) -> Self { self.style = style.into(); self } @@ -140,13 +135,13 @@ where } } -impl<'a, T, Message, Renderer> Widget - for VerticalSlider<'a, T, Message, Renderer> +impl<'a, T, Message, Theme, Renderer> Widget + for VerticalSlider<'a, T, Message, Theme> where T: Copy + Into + num_traits::FromPrimitive, Message: Clone, + Theme: StyleSheet, Renderer: core::Renderer, - Renderer::Theme: StyleSheet, { fn tag(&self) -> tree::Tag { tree::Tag::of::() @@ -201,7 +196,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, @@ -231,17 +226,18 @@ 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 + core::Renderer, - Renderer::Theme: StyleSheet, + T: Copy + Into + num_traits::FromPrimitive + 'a, + Message: Clone + 'a, + Theme: StyleSheet + 'a, + Renderer: core::Renderer + 'a, { fn from( - slider: VerticalSlider<'a, T, Message, Renderer>, - ) -> Element<'a, Message, Renderer> { + slider: VerticalSlider<'a, T, Message, Theme>, + ) -> Element<'a, Message, Theme, Renderer> { Element::new(slider) } } @@ -337,19 +333,19 @@ where } /// Draws a [`VerticalSlider`]. -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