Allow &mut self in overlay

This commit is contained in:
tarkah 2022-11-19 12:25:59 -08:00 committed by Cory Forsstrom
parent 67420cb1e4
commit f1ada7a803
17 changed files with 73 additions and 83 deletions

View file

@ -235,18 +235,20 @@ where
}
fn overlay<'b>(
&'b self,
&'b mut self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
use std::ops::DerefMut;
let state = tree.state.downcast_ref::<State>();
let overlay = OverlayBuilder {
content: self.content.borrow_mut(),
tree: state.tree.borrow_mut(),
types: PhantomData,
overlay_builder: |content, tree| {
overlay_builder: |content: &mut RefMut<Content<_, _>>, tree| {
content.update(
tree,
renderer,
@ -254,16 +256,18 @@ where
&self.view,
);
let Content {
element, layout, ..
} = content.deref_mut();
let content_layout = Layout::with_offset(
layout.position() - Point::ORIGIN,
&content.layout,
layout.bounds().position() - Point::ORIGIN,
layout,
);
content.element.as_widget().overlay(
tree,
content_layout,
renderer,
)
element
.as_widget_mut()
.overlay(tree, content_layout, renderer)
},
}
.build();