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 --- examples/loading_spinners/src/linear.rs | 47 +++++++++++++++------------------ 1 file changed, 21 insertions(+), 26 deletions(-) (limited to 'examples/loading_spinners/src/linear.rs') diff --git a/examples/loading_spinners/src/linear.rs b/examples/loading_spinners/src/linear.rs index 03aee9b1..ce375621 100644 --- a/examples/loading_spinners/src/linear.rs +++ b/examples/loading_spinners/src/linear.rs @@ -2,7 +2,7 @@ use iced::advanced::layout; use iced::advanced::renderer::{self, Quad}; use iced::advanced::widget::tree::{self, Tree}; -use iced::advanced::{Clipboard, Layout, Shell, Widget}; +use iced::advanced::{self, Clipboard, Layout, Shell, Widget}; use iced::event; use iced::mouse; use iced::time::Instant; @@ -14,29 +14,27 @@ use super::easing::{self, Easing}; use std::time::Duration; #[allow(missing_debug_implementations)] -pub struct Linear<'a, Renderer> +pub struct Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { width: Length, height: Length, - style: ::Style, + style: Theme::Style, easing: &'a Easing, cycle_duration: Duration, } -impl<'a, Renderer> Linear<'a, Renderer> +impl<'a, Theme> Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { /// Creates a new [`Linear`] with the given content. pub fn new() -> Self { Linear { width: Length::Fixed(100.0), height: Length::Fixed(4.0), - style: ::Style::default(), + style: Theme::Style::default(), easing: &easing::STANDARD, cycle_duration: Duration::from_millis(600), } @@ -55,11 +53,8 @@ where } /// Sets the style variant of this [`Linear`]. - pub fn style( - mut self, - style: ::Style, - ) -> Self { - self.style = style; + pub fn style(mut self, style: impl Into) -> Self { + self.style = style.into(); self } @@ -76,10 +71,9 @@ where } } -impl<'a, Renderer> Default for Linear<'a, Renderer> +impl<'a, Theme> Default for Linear<'a, Theme> where - Renderer: iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Theme: StyleSheet, { fn default() -> Self { Self::new() @@ -151,11 +145,12 @@ impl State { } } -impl<'a, Message, Renderer> Widget for Linear<'a, Renderer> +impl<'a, Message, Theme, Renderer> Widget + for Linear<'a, Theme> where - Message: 'a + Clone, - Renderer: 'a + iced::advanced::Renderer, - Renderer::Theme: StyleSheet, + Message: Clone + 'a, + Theme: StyleSheet + 'a, + Renderer: advanced::Renderer + 'a, { fn tag(&self) -> tree::Tag { tree::Tag::of::() @@ -207,7 +202,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, _style: &renderer::Style, layout: Layout<'_>, _cursor: mouse::Cursor, @@ -262,14 +257,14 @@ where } } -impl<'a, Message, Renderer> From> - for Element<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> From> + for Element<'a, Message, Theme, Renderer> where Message: Clone + 'a, + Theme: StyleSheet + 'a, Renderer: iced::advanced::Renderer + 'a, - Renderer::Theme: StyleSheet, { - fn from(linear: Linear<'a, Renderer>) -> Self { + fn from(linear: Linear<'a, Theme>) -> Self { Self::new(linear) } } -- cgit