# HG changeset patch # User Olaf Wintermann # Date 1775917564 -7200 # Node ID 33395e907ff61805ebcf67d496cd9909e59d998c # Parent e31d5aa8b4666d1dcf8dc2d81fba4d9138bf55ef implement textfield utility functions (Cocoa) diff -r e31d5aa8b466 -r 33395e907ff6 ui/cocoa/text.m --- 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; +}