diff options
author | 2023-04-21 21:40:43 +0200 | |
---|---|---|
committer | 2023-04-21 21:40:43 +0200 | |
commit | ecc1a4509ab25611397386c9f9c85fe7b269fda3 (patch) | |
tree | a409fdae859dd211bfe6c680a37d62c3080ea531 /lazy/src/responsive.rs | |
parent | f42fb6af54ea6057a8476704c6756b59c3f3d631 (diff) | |
download | iced-ecc1a4509ab25611397386c9f9c85fe7b269fda3.tar.gz iced-ecc1a4509ab25611397386c9f9c85fe7b269fda3.tar.bz2 iced-ecc1a4509ab25611397386c9f9c85fe7b269fda3.zip |
Avoid cloning `layout::Node` in `Responsive` widget
Diffstat (limited to '')
-rw-r--r-- | lazy/src/responsive.rs | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lazy/src/responsive.rs b/lazy/src/responsive.rs index 88ed6312..d87815f6 100644 --- a/lazy/src/responsive.rs +++ b/lazy/src/responsive.rs @@ -58,7 +58,7 @@ impl<'a, Message, Renderer> Content<'a, Message, Renderer> where Renderer: iced_native::Renderer, { - fn layout(&mut self, renderer: &Renderer) -> layout::Node { + fn layout(&mut self, renderer: &Renderer) { if self.layout.is_none() { self.layout = Some(self.element.as_widget().layout( @@ -66,8 +66,6 @@ where &layout::Limits::new(Size::ZERO, self.size), )); } - - self.layout.clone().unwrap() } fn update( @@ -103,11 +101,12 @@ where R: Deref<Target = Renderer>, { self.update(tree, layout.bounds().size(), view); + self.layout(renderer.deref()); - let node = self.layout(renderer.deref()); - - let content_layout = - Layout::with_offset(layout.position() - Point::ORIGIN, &node); + let content_layout = Layout::with_offset( + layout.position() - Point::ORIGIN, + self.layout.as_ref().unwrap(), + ); f(tree, renderer, content_layout, &mut self.element) } @@ -290,14 +289,17 @@ where types: PhantomData, overlay_builder: |content: &mut RefMut<Content<_, _>>, tree| { content.update(tree, layout.bounds().size(), &self.view); + content.layout(renderer); - let node = content.layout(renderer); - - let Content { element, .. } = content.deref_mut(); + let Content { + element, + layout: content_layout_node, + .. + } = content.deref_mut(); let content_layout = Layout::with_offset( layout.bounds().position() - Point::ORIGIN, - &node, + content_layout_node.as_ref().unwrap(), ); element |