From cb71877beb8d2f19b55304c5e765ba05ee61f7b8 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Wed, 22 Apr 2026 20:36:13 +0200 Subject: [PATCH] extend textfield events --- ui-rs/src/ui/text.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ui-rs/src/ui/text.rs b/ui-rs/src/ui/text.rs index fde4232..2b30ef2 100644 --- a/ui-rs/src/ui/text.rs +++ b/ui-rs/src/ui/text.rs @@ -379,6 +379,25 @@ impl<'a, T> TextFieldBuilder<'a, T> { } } + pub fn onactivate(&mut self, f: F) -> &mut Self + where F: FnMut(&mut event::Event) + '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::)); + 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(&mut self, f: F) -> &mut Self where F: FnMut(&mut event::Event) + '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); -- 2.47.3