diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/src/renderer.rs | 11 | ||||
-rw-r--r-- | native/src/user_interface.rs | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/native/src/renderer.rs b/native/src/renderer.rs index 5963d577..833de571 100644 --- a/native/src/renderer.rs +++ b/native/src/renderer.rs @@ -26,6 +26,15 @@ mod windowed; pub use debugger::Debugger; pub use windowed::{Target, Windowed}; -pub trait Renderer { +use crate::{layout, Element}; + +pub trait Renderer: Sized { type Output; + + fn layout<'a, Message>( + &mut self, + element: &Element<'a, Message, Self>, + ) -> layout::Node { + element.layout(self, &layout::Limits::NONE) + } } diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 4343086b..f031b090 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -97,7 +97,7 @@ where pub fn build<E: Into<Element<'a, Message, Renderer>>>( root: E, cache: Cache, - renderer: &Renderer, + renderer: &mut Renderer, ) -> Self { let root = root.into(); @@ -110,7 +110,7 @@ where cache.layout } else { let layout_start = std::time::Instant::now(); - let layout = root.layout(renderer, &layout::Limits::NONE); + let layout = renderer.layout(&root); dbg!(std::time::Instant::now() - layout_start); layout |