--- a/ui/cocoa/text.m Thu Apr 09 20:28:59 2026 +0200 +++ b/ui/cocoa/text.m Sat Apr 11 16:26:04 2026 +0200 @@ -258,3 +258,51 @@ NSTextField *textfield = (__bridge NSTextField*)s->obj; textfield.stringValue = [[NSString alloc] initWithUTF8String:value]; } + +/* -------------------------- public Textfield functions -------------------------- */ + +void ui_textfield_focus(UIWIDGET textfield) { + NSTextField *tf = (__bridge NSTextField*)textfield; + [tf.window makeFirstResponder:tf]; + [tf selectText:nil]; +} + +void ui_textfield_focus_without_selecting(UIWIDGET textfield) { + NSTextField *tf = (__bridge NSTextField*)textfield; + [tf.window makeFirstResponder:tf]; +} + +void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) { + NSTextField *tf = (__bridge NSTextField*)textfield; + [tf.window makeFirstResponder:tf]; + NSTextView *fieldEditor = (NSTextView *)[tf.window fieldEditor:YES forObject:tf]; + [fieldEditor setSelectedRange:NSMakeRange(begin, end-begin)]; +} + +void ui_textfield_select_all(UIWIDGET textfield) { + NSTextField *tf = (__bridge NSTextField*)textfield; + [tf selectText:nil]; +} + +void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) { + NSTextField *tf = (__bridge NSTextField*)textfield; + tf.editable = editable; +} + +UiBool ui_textfield_is_editable(UIWIDGET textfield) { + NSTextField *tf = (__bridge NSTextField*)textfield; + return tf.isEditable; +} + +void ui_textfield_set_position(UIWIDGET textfield, int pos) { + NSTextField *tf = (__bridge NSTextField*)textfield; + NSTextView *editor = (NSTextView *)[tf currentEditor]; + [editor setSelectedRange:NSMakeRange(pos, 0)]; +} + +int ui_textfield_get_position(UIWIDGET textfield) { + NSTextField *tf = (__bridge NSTextField*)textfield; + NSTextView *editor = (NSTextView *)[tf currentEditor]; + NSRange selectedRange = [editor selectedRange]; + return (int)selectedRange.location; +}