Selaa lähdekoodia

clean up node mut api

Evan Almloff 2 vuotta sitten
vanhempi
commit
5b822201f7
2 muutettua tiedostoa jossa 11 lisäystä ja 2 poistoa
  1. 5 0
      packages/native-core/src/real_dom.rs
  2. 6 2
      packages/tui/src/lib.rs

+ 5 - 0
packages/native-core/src/real_dom.rs

@@ -420,6 +420,11 @@ impl<'a, V: FromAnyValue + Send + Sync> NodeMut<'a, V> {
         self.dom
     }
 
+    #[inline]
+    pub fn parent_mut(&mut self) -> Option<NodeMut<V>> {
+        self.parent_id().map(|id| NodeMut { id, dom: self.dom })
+    }
+
     #[inline]
     pub fn get_mut<T: Any + Sync + Send>(&mut self) -> Option<&mut T> {
         // mark the node state as dirty

+ 6 - 2
packages/tui/src/lib.rs

@@ -75,7 +75,11 @@ impl TuiContext {
 
 pub fn render<R: Renderer<Rc<EventData>>>(
     cfg: Config,
-    f: impl FnOnce(&Arc<RwLock<RealDom>>, &Arc<Mutex<Taffy>>, UnboundedSender<InputEvent>) -> R,
+    create_renderer: impl FnOnce(
+        &Arc<RwLock<RealDom>>,
+        &Arc<Mutex<Taffy>>,
+        UnboundedSender<InputEvent>,
+    ) -> R,
 ) -> Result<()> {
     let mut rdom = RealDom::new(Box::new([
         TaffyLayout::to_type_erased(),
@@ -105,7 +109,7 @@ pub fn render<R: Renderer<Rc<EventData>>>(
 
     let rdom = Arc::new(RwLock::new(rdom));
     let taffy = Arc::new(Mutex::new(Taffy::new()));
-    let mut renderer = f(&rdom, &taffy, event_tx_clone);
+    let mut renderer = create_renderer(&rdom, &taffy, event_tx_clone);
 
     {
         let mut rdom = rdom.write().unwrap();