@effindomv2/fui-rs 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -512,3 +512,18 @@ impl HasFlexBoxRoot for ScrollBox {
512
512
  &self.inner.root
513
513
  }
514
514
  }
515
+
516
+ impl ThemeBindable for ScrollBox {
517
+ fn theme_binding_node(&self) -> NodeRef {
518
+ self.inner.root.retained_node_ref()
519
+ }
520
+
521
+ fn weak_theme_target(&self) -> Box<dyn Fn() -> Option<Self>> {
522
+ let weak = Rc::downgrade(&self.inner);
523
+ Box::new(move || {
524
+ Some(ScrollBox {
525
+ inner: weak.upgrade()?,
526
+ })
527
+ })
528
+ }
529
+ }
@@ -81,19 +81,6 @@ impl TextNode {
81
81
  self
82
82
  }
83
83
 
84
- pub fn bind_theme(&self, handler: impl Fn(&TextNode, crate::theme::Theme) + 'static) -> &Self {
85
- let weak_core = Rc::downgrade(&self.core);
86
- let weak_props = Rc::downgrade(&self.props);
87
- let guard = crate::theme::subscribe(move |theme| {
88
- let (Some(core), Some(props)) = (weak_core.upgrade(), weak_props.upgrade()) else {
89
- return;
90
- };
91
- handler(&TextNode { core, props }, theme);
92
- });
93
- self.retained_node_ref().retain_attachment(Rc::new(guard));
94
- self
95
- }
96
-
97
84
  pub fn width(&self, width: f32, unit: Unit) -> &Self {
98
85
  self.props.borrow_mut().width = Some((width, unit));
99
86
  {
@@ -670,6 +657,23 @@ impl Node for TextNode {
670
657
  }
671
658
  }
672
659
 
660
+ impl super::ThemeBindable for TextNode {
661
+ fn theme_binding_node(&self) -> NodeRef {
662
+ self.retained_node_ref()
663
+ }
664
+
665
+ fn weak_theme_target(&self) -> Box<dyn Fn() -> Option<Self>> {
666
+ let weak_core = Rc::downgrade(&self.core);
667
+ let weak_props = Rc::downgrade(&self.props);
668
+ Box::new(move || {
669
+ Some(TextNode {
670
+ core: weak_core.upgrade()?,
671
+ props: weak_props.upgrade()?,
672
+ })
673
+ })
674
+ }
675
+ }
676
+
673
677
  #[cfg(test)]
674
678
  mod tests {
675
679
  use super::*;
@@ -513,6 +513,21 @@ impl HasFlexBoxRoot for VirtualList {
513
513
  }
514
514
  }
515
515
 
516
+ impl ThemeBindable for VirtualList {
517
+ fn theme_binding_node(&self) -> NodeRef {
518
+ self.inner.root.retained_node_ref()
519
+ }
520
+
521
+ fn weak_theme_target(&self) -> Box<dyn Fn() -> Option<Self>> {
522
+ let weak = Rc::downgrade(&self.inner);
523
+ Box::new(move || {
524
+ Some(VirtualList {
525
+ inner: weak.upgrade()?,
526
+ })
527
+ })
528
+ }
529
+ }
530
+
516
531
  #[cfg(test)]
517
532
  mod tests {
518
533
  use super::*;