fixed default widget state created via define_widget_constructor

- added `define_widget_traits` that combines two commonly used macros
This commit is contained in:
Dmitry Stepanov
2026-09-08 20:37:33 +03:00
parent 52e5c89f98
commit 76c91aad8e
+11 -3
View File
@@ -3816,9 +3816,9 @@ macro_rules! define_widget_constructor {
> {
$crate::graph::constructor::GraphNodeConstructor::new::<Self>()
.with_variant($display_name, |ui| {
ui.add_node($crate::UiNode::new(<$type_name>::default()))
.transmute()
.into()
let mut node = $crate::UiNode::new(<$type_name>::default());
**node = $crate::widget::WidgetBuilder::new().build(&mut ui.build_ctx());
ui.add_node(node).transmute().into()
})
.with_group($group_name)
}
@@ -3826,6 +3826,14 @@ macro_rules! define_widget_constructor {
};
}
#[macro_export]
macro_rules! define_widget_traits {
($type_name:ty, $display_name:expr, $group_name:expr) => {
$crate::define_widget_deref!($type_name);
$crate::define_widget_constructor!($type_name, $display_name, $group_name);
};
}
fn is_approx_zero(v: f32) -> bool {
v.abs() <= 10.0 * f32::EPSILON
}