Initialize lazy::pure::Component view properly
... during `children` and `diff` in the `Widget` implementation
This commit is contained in:
parent
fbbb864aaa
commit
fa3bd4280e
1 changed files with 26 additions and 21 deletions
|
|
@ -101,27 +101,6 @@ where
|
|||
&self,
|
||||
f: impl FnOnce(&mut Element<'_, Event, Renderer>) -> T,
|
||||
) -> T {
|
||||
if self
|
||||
.state
|
||||
.borrow()
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.borrow_element()
|
||||
.is_none()
|
||||
{
|
||||
let heads = self.state.borrow_mut().take().unwrap().into_heads();
|
||||
|
||||
*self.state.borrow_mut() = Some(
|
||||
StateBuilder {
|
||||
component: heads.component,
|
||||
message: PhantomData,
|
||||
state: PhantomData,
|
||||
element_builder: |state| Some(state.view(&S::default())),
|
||||
}
|
||||
.build(),
|
||||
);
|
||||
}
|
||||
|
||||
self.state
|
||||
.borrow_mut()
|
||||
.as_mut()
|
||||
|
|
@ -145,10 +124,36 @@ where
|
|||
}
|
||||
|
||||
fn children(&self) -> Vec<Tree> {
|
||||
let heads = self.state.borrow_mut().take().unwrap().into_heads();
|
||||
|
||||
*self.state.borrow_mut() = Some(
|
||||
StateBuilder {
|
||||
component: heads.component,
|
||||
message: PhantomData,
|
||||
state: PhantomData,
|
||||
element_builder: |state| Some(state.view(&S::default())),
|
||||
}
|
||||
.build(),
|
||||
);
|
||||
|
||||
self.with_element(|element| vec![Tree::new(element)])
|
||||
}
|
||||
|
||||
fn diff(&self, tree: &mut Tree) {
|
||||
let heads = self.state.borrow_mut().take().unwrap().into_heads();
|
||||
|
||||
*self.state.borrow_mut() = Some(
|
||||
StateBuilder {
|
||||
component: heads.component,
|
||||
message: PhantomData,
|
||||
state: PhantomData,
|
||||
element_builder: |state| {
|
||||
Some(state.view(tree.state.downcast_ref()))
|
||||
},
|
||||
}
|
||||
.build(),
|
||||
);
|
||||
|
||||
self.with_element(|element| {
|
||||
tree.diff_children(std::slice::from_ref(&element))
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue