diff options
author | 2019-11-10 06:05:20 +0100 | |
---|---|---|
committer | 2019-11-11 03:08:00 +0100 | |
commit | 0240c3981b716c82ecb3364945815335b420a63e (patch) | |
tree | 441eebaa9441649a4e878bde71cdec20d4a67391 /native/src/element.rs | |
parent | 2303111e09d806ef2a652bddc2b73be6dccf6ae2 (diff) | |
download | iced-0240c3981b716c82ecb3364945815335b420a63e.tar.gz iced-0240c3981b716c82ecb3364945815335b420a63e.tar.bz2 iced-0240c3981b716c82ecb3364945815335b420a63e.zip |
Draft custom layout engine based on `druid`
Diffstat (limited to 'native/src/element.rs')
-rw-r--r-- | native/src/element.rs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index acae1135..361d7567 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -1,4 +1,6 @@ -use crate::{layout, renderer, Color, Event, Hasher, Layout, Point, Widget}; +use crate::{ + layout, renderer, Color, Event, Hasher, Layout, Length, Point, Widget, +}; /// A generic [`Widget`]. /// @@ -39,18 +41,26 @@ where } } + pub fn width(&self) -> Length { + self.widget.width() + } + + pub fn height(&self) -> Length { + self.widget.height() + } + pub fn layout( &self, renderer: &Renderer, limits: &layout::Limits, - ) -> Layout { + ) -> layout::Node { self.widget.layout(renderer, limits) } pub fn draw( &self, renderer: &mut Renderer, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, ) -> Renderer::Output { self.widget.draw(renderer, layout, cursor_position) @@ -285,14 +295,18 @@ where A: Clone, Renderer: crate::Renderer, { - fn layout(&self, renderer: &Renderer, limits: &layout::Limits) -> Layout { + fn layout( + &self, + renderer: &Renderer, + limits: &layout::Limits, + ) -> layout::Node { self.widget.layout(renderer, limits) } fn on_event( &mut self, event: Event, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, messages: &mut Vec<B>, renderer: &Renderer, @@ -316,7 +330,7 @@ where fn draw( &self, renderer: &mut Renderer, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, ) -> Renderer::Output { self.widget.draw(renderer, layout, cursor_position) @@ -357,14 +371,18 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> where Renderer: crate::Renderer + renderer::Debugger, { - fn layout(&self, renderer: &Renderer, limits: &layout::Limits) -> Layout { + fn layout( + &self, + renderer: &Renderer, + limits: &layout::Limits, + ) -> layout::Node { self.element.widget.layout(renderer, limits) } fn on_event( &mut self, event: Event, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, messages: &mut Vec<Message>, renderer: &Renderer, @@ -381,7 +399,7 @@ where fn draw( &self, renderer: &mut Renderer, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, ) -> Renderer::Output { renderer.explain( |