diff options
Diffstat (limited to 'pure/src/widget/pane_grid.rs')
-rw-r--r-- | pure/src/widget/pane_grid.rs | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/pure/src/widget/pane_grid.rs b/pure/src/widget/pane_grid.rs index c532a6de..69150aa8 100644 --- a/pure/src/widget/pane_grid.rs +++ b/pure/src/widget/pane_grid.rs @@ -19,6 +19,7 @@ pub use iced_native::widget::pane_grid::{ }; use crate::overlay; +use crate::widget::container; use crate::widget::tree::{self, Tree}; use crate::{Element, Widget}; @@ -83,7 +84,11 @@ pub use iced_style::pane_grid::{Line, StyleSheet}; /// .on_resize(10, Message::PaneResized); /// ``` #[allow(missing_debug_implementations)] -pub struct PaneGrid<'a, Message, Renderer> { +pub struct PaneGrid<'a, Message, Renderer> +where + Renderer: iced_native::Renderer, + Renderer::Theme: StyleSheet + container::StyleSheet, +{ state: &'a state::Internal, elements: Vec<(Pane, Content<'a, Message, Renderer>)>, width: Length, @@ -92,12 +97,13 @@ pub struct PaneGrid<'a, Message, Renderer> { on_click: Option<Box<dyn Fn(Pane) -> Message + 'a>>, on_drag: Option<Box<dyn Fn(DragEvent) -> Message + 'a>>, on_resize: Option<(u16, Box<dyn Fn(ResizeEvent) -> Message + 'a>)>, - style_sheet: Box<dyn StyleSheet + 'a>, + style: <Renderer::Theme as StyleSheet>::Style, } impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> where Renderer: iced_native::Renderer, + Renderer::Theme: StyleSheet + container::StyleSheet, { /// Creates a [`PaneGrid`] with the given [`State`] and view function. /// @@ -124,7 +130,7 @@ where on_click: None, on_drag: None, on_resize: None, - style_sheet: Default::default(), + style: Default::default(), } } @@ -184,8 +190,11 @@ where } /// Sets the style of the [`PaneGrid`]. - pub fn style(mut self, style: impl Into<Box<dyn StyleSheet + 'a>>) -> Self { - self.style_sheet = style.into(); + pub fn style( + mut self, + style: impl Into<<Renderer::Theme as StyleSheet>::Style>, + ) -> Self { + self.style = style.into(); self } } @@ -194,6 +203,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> for PaneGrid<'a, Message, Renderer> where Renderer: iced_native::Renderer, + Renderer::Theme: StyleSheet + container::StyleSheet, { fn tag(&self) -> tree::Tag { tree::Tag::of::<state::Action>() @@ -331,6 +341,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, + theme: &Renderer::Theme, style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, @@ -342,11 +353,12 @@ where layout, cursor_position, renderer, + theme, style, viewport, self.spacing, self.on_resize.as_ref().map(|(leeway, _)| *leeway), - self.style_sheet.as_ref(), + self.style, self.elements .iter() .zip(&tree.children) @@ -360,6 +372,7 @@ where content.draw( tree, renderer, + theme, style, layout, cursor_position, @@ -389,8 +402,9 @@ where impl<'a, Message, Renderer> From<PaneGrid<'a, Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + iced_native::Renderer, Message: 'a, + Renderer: 'a + iced_native::Renderer, + Renderer::Theme: StyleSheet + container::StyleSheet, { fn from( pane_grid: PaneGrid<'a, Message, Renderer>, |