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/container.rs | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) (limited to 'widget/src/container.rs') diff --git a/widget/src/container.rs b/widget/src/container.rs index f2d1aaba..78ec1978 100644 --- a/widget/src/container.rs +++ b/widget/src/container.rs @@ -19,10 +19,14 @@ pub use iced_style::container::{Appearance, StyleSheet}; /// /// It is normally used for alignment purposes. #[allow(missing_debug_implementations)] -pub struct Container<'a, Message, Renderer = crate::Renderer> -where +pub struct Container< + 'a, + Message, + Theme = crate::Theme, + Renderer = crate::Renderer, +> where + Theme: StyleSheet, Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, { id: Option, padding: Padding, @@ -32,19 +36,19 @@ where max_height: f32, horizontal_alignment: alignment::Horizontal, vertical_alignment: alignment::Vertical, - style: ::Style, - content: Element<'a, Message, Renderer>, + style: Theme::Style, + content: Element<'a, Message, Theme, Renderer>, } -impl<'a, Message, Renderer> Container<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> Container<'a, Message, Theme, Renderer> where + Theme: StyleSheet, Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, { /// Creates an empty [`Container`]. pub fn new(content: T) -> Self where - T: Into>, + T: Into>, { let content = content.into(); let size = content.as_widget().size_hint(); @@ -124,20 +128,17 @@ where } /// Sets the style of the [`Container`]. - pub fn style( - mut self, - style: impl Into<::Style>, - ) -> Self { + pub fn style(mut self, style: impl Into) -> Self { self.style = style.into(); self } } -impl<'a, Message, Renderer> Widget - for Container<'a, Message, Renderer> +impl<'a, Message, Theme, Renderer> Widget + for Container<'a, Message, Theme, Renderer> where + Theme: StyleSheet, Renderer: crate::core::Renderer, - Renderer::Theme: StyleSheet, { fn tag(&self) -> tree::Tag { self.content.as_widget().tag() @@ -246,7 +247,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, - theme: &Renderer::Theme, + theme: &Theme, renderer_style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, @@ -278,7 +279,7 @@ where tree: &'b mut Tree, layout: Layout<'_>, renderer: &Renderer, - ) -> Option> { + ) -> Option> { self.content.as_widget_mut().overlay( tree, layout.children().next().unwrap(), @@ -287,16 +288,16 @@ 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: 'a, + Theme: 'a + StyleSheet, Renderer: 'a + crate::core::Renderer, - Renderer::Theme: StyleSheet, { fn from( - column: Container<'a, Message, Renderer>, - ) -> Element<'a, Message, Renderer> { + column: Container<'a, Message, Theme, Renderer>, + ) -> Element<'a, Message, Theme, Renderer> { Element::new(column) } } -- cgit