]> uap-core.de Git - note.git/commitdiff
extend textfield events main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Wed, 22 Apr 2026 18:36:13 +0000 (20:36 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Wed, 22 Apr 2026 18:36:13 +0000 (20:36 +0200)
ui-rs/src/ui/text.rs

index fde423231e2c06f4514bc462b233fa68bf8610f8..2b30ef277f911ba7e8da7eef055b295b939d82f8 100644 (file)
@@ -379,6 +379,25 @@ impl<'a, T> TextFieldBuilder<'a, T> {
         }
     }
 
+    pub fn onactivate<F>(&mut self, f: F) -> &mut Self
+    where F: FnMut(&mut event::Event<T>) + 'static {
+        let wrapper = Box::new(EventWrapper { callback: Box::new(f) });
+        let ptr = self.obj.ctx.reg_box(wrapper);
+        unsafe {
+            ui_textfield_args_set_onactivate(self.args, Some(event::event_wrapper::<T>));
+            ui_textfield_args_set_onactivatedata(self.args, ptr as *mut c_void);
+        }
+        self
+    }
+
+    pub fn onactivate_action(&mut self, action: &str) -> &mut Self {
+        let cstr = CString::new(action).unwrap();
+        unsafe {
+            ui_textfield_args_set_onactivate_action(self.args, cstr.as_ptr());
+        }
+        self
+    }
+
     pub fn onchange<F>(&mut self, f: F) -> &mut Self
     where F: FnMut(&mut event::Event<T>) + 'static {
         let wrapper = Box::new(EventWrapper { callback: Box::new(f) });
@@ -390,6 +409,14 @@ impl<'a, T> TextFieldBuilder<'a, T> {
         self
     }
 
+    pub fn onchange_action(&mut self, action: &str) -> &mut Self {
+        let cstr = CString::new(action).unwrap();
+        unsafe {
+            ui_textfield_args_set_onchange_action(self.args, cstr.as_ptr());
+        }
+        self
+    }
+
     pub fn visibility_states(&mut self, states: &[i32]) -> &mut Self {
         unsafe {
             ui_textfield_args_set_visibility_states(self.args, states.as_ptr(), states.len() as c_int);
@@ -432,8 +459,12 @@ extern "C" {
     fn ui_textfield_args_set_style_class(args: *mut UiTextFieldArgs, classname: *const c_char);
     fn ui_textfield_args_set_varname(args: *mut UiTextFieldArgs, varname: *const c_char);
     fn ui_textfield_args_set_value(args: *mut UiTextFieldArgs, ivalue: *mut UiString);
+    fn ui_textfield_args_set_onactivate(args: *mut UiTextFieldArgs, callback: UiCallback);
+    fn ui_textfield_args_set_onactivatedata(args: *mut UiTextFieldArgs, data: *mut c_void);
+    fn ui_textfield_args_set_onactivate_action(args: *mut UiTextFieldArgs, action: *const c_char);
     fn ui_textfield_args_set_onchange(args: *mut UiTextFieldArgs, callback: UiCallback);
     fn ui_textfield_args_set_onchangedata(args: *mut UiTextFieldArgs, data: *mut c_void);
+    fn ui_textfield_args_set_onchange_action(args: *mut UiTextFieldArgs, action: *const c_char);
     fn ui_textfield_args_set_states(args: *mut UiTextFieldArgs, states: *const c_int, numstates: c_int);
     fn ui_textfield_args_set_visibility_states(args: *mut UiTextFieldArgs, states: *const c_int, numstates: c_int);
     fn ui_textfield_args_free(args: *mut UiTextFieldArgs);