summaryrefslogtreecommitdiffstats
path: root/lazy/src/pure/component.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-07 16:39:04 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-03-07 16:39:04 +0700
commit9fd66c820d08d3ff193ef04907686774c98d2fec (patch)
treeb37fc9ce0185859f7cfcee65bab7e8e02b39a463 /lazy/src/pure/component.rs
parentfa3bd4280e7c34354db0a15ef1baba9fbbeb87f1 (diff)
downloadiced-9fd66c820d08d3ff193ef04907686774c98d2fec.tar.gz
iced-9fd66c820d08d3ff193ef04907686774c98d2fec.tar.bz2
iced-9fd66c820d08d3ff193ef04907686774c98d2fec.zip
Introduce `rebuild_element` helper in `lazy::pure::Component`
Diffstat (limited to '')
-rw-r--r--lazy/src/pure/component.rs42
1 files changed, 16 insertions, 26 deletions
diff --git a/lazy/src/pure/component.rs b/lazy/src/pure/component.rs
index ad82c55e..4d952f69 100644
--- a/lazy/src/pure/component.rs
+++ b/lazy/src/pure/component.rs
@@ -90,6 +90,20 @@ impl<'a, Message, Renderer, Event, S> Instance<'a, Message, Renderer, Event, S>
where
S: Default,
{
+ fn rebuild_element(&self, state: &S) {
+ 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: |component| Some(component.view(state)),
+ }
+ .build(),
+ );
+ }
+
fn with_element<T>(
&self,
f: impl FnOnce(&Element<'_, Event, Renderer>) -> T,
@@ -124,36 +138,12 @@ 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.rebuild_element(&S::default());
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.rebuild_element(tree.state.downcast_ref());
self.with_element(|element| {
tree.diff_children(std::slice::from_ref(&element))
})