diff options
| author | 2023-04-21 21:40:43 +0200 | |
|---|---|---|
| committer | 2023-04-21 21:40:43 +0200 | |
| commit | ecc1a4509ab25611397386c9f9c85fe7b269fda3 (patch) | |
| tree | a409fdae859dd211bfe6c680a37d62c3080ea531 /lazy | |
| 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  | 
