wip
This commit is contained in:
parent
af0d72df00
commit
5b493e3e4b
5 changed files with 25 additions and 25 deletions
src/view
|
@ -38,7 +38,7 @@ where
|
|||
}
|
||||
|
||||
pub fn set_view(&self, view: Option<Arc<V>>) {
|
||||
let mut v = self.view.write().unwrap();
|
||||
let mut v = self.view.write().unwrap();
|
||||
*v = view.clone();
|
||||
self.cast.write().unwrap().reset(view);
|
||||
}
|
||||
|
@ -49,15 +49,12 @@ where
|
|||
|
||||
pub fn add_observer(&self, observer: Arc<RwLock<dyn Observer<V>>>) {
|
||||
self.update();
|
||||
self.cast
|
||||
.write()
|
||||
.unwrap()
|
||||
.add_observer(Arc::downgrade(&observer));
|
||||
|
||||
observer
|
||||
.write()
|
||||
.unwrap()
|
||||
.reset(self.view.read().unwrap().clone());
|
||||
let mut obs = observer.write().unwrap();
|
||||
let mut cst = self.cast.write().unwrap();
|
||||
|
||||
obs.reset(self.view.read().unwrap().clone());
|
||||
cst.add_observer(Arc::downgrade(&observer));
|
||||
}
|
||||
|
||||
pub fn add_update_hook(&self, hook_cast: Arc<dyn UpdateTask>) {
|
||||
|
@ -112,8 +109,9 @@ where V::Msg: Clone
|
|||
let keepalive = Arc::new(RwLock::new( self.inner() ));
|
||||
|
||||
other_port.update(); // todo: required?
|
||||
other_port.add_observer( keepalive.clone() );
|
||||
self.update_hooks.write().unwrap().clear();
|
||||
other_port.add_observer( keepalive.clone() );
|
||||
self.set_view( other_port.view.read().unwrap().clone() );
|
||||
self.add_update_hook( Arc::new(other_port) );
|
||||
self.update();
|
||||
keepalive
|
||||
|
@ -129,7 +127,7 @@ impl<V: View + ?Sized + 'static> Observer<V> for InnerViewPort<V> where V::Msg:
|
|||
fn reset(&mut self, new_view: Option<Arc<V>>) {
|
||||
self.set_view(new_view);
|
||||
}
|
||||
|
||||
|
||||
fn notify(&mut self, msg: &V::Msg) {
|
||||
self.0.cast.write().unwrap().notify(msg);
|
||||
}
|
||||
|
@ -374,4 +372,3 @@ where
|
|||
}
|
||||
|
||||
//<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue