ui/cocoa/text.m

changeset 1086
33395e907ff6
parent 1084
cce6dad72164
--- 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;
+}

mercurial