From 76c91aad8eca488ce527b1af707be8b3b24ad72d Mon Sep 17 00:00:00 2001 From: Dmitry Stepanov Date: Tue, 8 Sep 2026 20:37:33 +0300 Subject: [PATCH] fixed default widget state created via `define_widget_constructor` - added `define_widget_traits` that combines two commonly used macros --- fyrox-ui/src/lib.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/fyrox-ui/src/lib.rs b/fyrox-ui/src/lib.rs index 405eddfed..21f949f7b 100644 --- a/fyrox-ui/src/lib.rs +++ b/fyrox-ui/src/lib.rs @@ -3816,9 +3816,9 @@ macro_rules! define_widget_constructor { > { $crate::graph::constructor::GraphNodeConstructor::new::() .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 }