]> uap-core.de Git - note.git/commitdiff
add fn return type to widget_fn macro main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 8 May 2026 18:56:26 +0000 (20:56 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 8 May 2026 18:56:26 +0000 (20:56 +0200)
ui-rs/src/ui/button.rs
ui-rs/src/ui/text.rs
ui-rs/src/ui/widget.rs
ui-rs/src/ui/window.rs

index 887fb05c10085faade1a11d77b37d12cb9bca8ee..055f7d88d664b317ef2170b339e9dde44c12a061 100644 (file)
@@ -98,11 +98,11 @@ pub enum LinkButtonType {
 pub type ToggleButtonCreate = fn(*const UiObject, *const UiToggleArgs) -> *mut c_void;
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(button, button_builder, ButtonBuilder);
-    widget_fn!(togglebutton, togglebutton_builder, ToggleBuilder);
-    widget_fn!(checkbox, checkbox_builder, ToggleBuilder);
-    widget_fn!(switch, switch_builder, ToggleBuilder);
-    widget_fn!(radiobutton, radiobutton_builder, ToggleBuilder);
+    widget_fn!(button, button_builder, ButtonBuilder, Button);
+    widget_fn!(togglebutton, togglebutton_builder, ToggleBuilder, ToggleButton);
+    widget_fn!(checkbox, checkbox_builder, ToggleBuilder, ToggleButton);
+    widget_fn!(switch, switch_builder, ToggleBuilder, ToggleButton);
+    widget_fn!(radiobutton, radiobutton_builder, ToggleBuilder, ToggleButton);
 
     pub fn button_builder<'a>(&'a mut self) -> ButtonBuilder<'a, T> {
         unsafe {
index 30491f964038d839a52740133c12534bc22fe29a..8f3190009d0b865f7990dde101f17240c24fee25 100644 (file)
@@ -97,7 +97,7 @@ pub struct TextAreaBuilder<'a, T> {
 }
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(textarea, textarea_builder, TextAreaBuilder);
+    widget_fn!(textarea, textarea_builder, TextAreaBuilder, TextArea);
 
     pub fn textarea_builder<'a>(&'a mut self) -> TextAreaBuilder<'a, T> {
         unsafe {
@@ -360,9 +360,9 @@ pub fn frameless_textfield_create(obj: *const UiObject, args: *const UiTextField
 }
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(textfield, textfield_builder, TextFieldBuilder);
-    widget_fn!(passwordfield, passwordfield_builder, TextFieldBuilder);
-    widget_fn!(frameless_textfield, frameless_textfield_builder, TextFieldBuilder);
+    widget_fn!(textfield, textfield_builder, TextFieldBuilder, TextField);
+    widget_fn!(passwordfield, passwordfield_builder, TextFieldBuilder, TextField);
+    widget_fn!(frameless_textfield, frameless_textfield_builder, TextFieldBuilder, TextField);
 
     pub fn textfield_builder<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
         unsafe {
index 0bb233733433a622e35f66b5443e3b6114773472..07bdc7689b79c8efdfb248e8ea27792108979a52 100644 (file)
@@ -87,14 +87,14 @@ extern "C" {
 ///     }
 ///
 macro_rules! widget_fn {
-    ($fn_name:ident, $builder_fn:ident, $builder_ty:ident) => {
-        pub fn $fn_name<F>(&mut self, build: F)
+    ($fn_name:ident, $builder_fn:ident, $builder_ty:ident, $widget:ident) => {
+        pub fn $fn_name<F>(&mut self, build: F) -> $widget
         where
             F: Fn(&mut $builder_ty<T>),
         {
             let mut builder = self.$builder_fn();
             build(&mut builder);
-            builder.create();
+            builder.create()
         }
     };
 }
index 6bdd6fac4825c9b880bb584687db3528145f2c73..ef29aff70df26a3c8e2699afb4ebf1c75f4d1cc9 100644 (file)
@@ -228,7 +228,14 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    widget_fn!(dialog, dialog_builder, DialogBuilder);
+    pub fn dialog<F>(&mut self, build: F)
+    where
+    F: Fn(&mut DialogBuilder<T>),
+    {
+        let mut builder = self.dialog_builder();
+        build(&mut builder);
+        builder.create();
+    }
 }