]> uap-core.de Git - note.git/commitdiff
update toolkit main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 30 Apr 2026 18:54:39 +0000 (20:54 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 30 Apr 2026 18:54:39 +0000 (20:54 +0200)
ui/cocoa/text.m
ui/common/types.c

index 00a0877ded92a6ac3a1f79cc1db9037bdc784284..0d6100b5379593e740d1a7d7da92421f4b6723f6 100644 (file)
@@ -81,7 +81,91 @@ UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) {
     return (__bridge void*)textview;
 }
 
+void ui_textarea_focus(UIWIDGET textarea) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_focus: widget is not a textarea\n");
+        return;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    [view.window makeFirstResponder:view];
+
+}
+
+void ui_textarea_set_selection(UIWIDGET textarea, int begin, int end) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_set_selection: widget is not a textarea\n");
+        return;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    NSRange range = NSMakeRange(begin, end-begin);
+    [view setSelectedRange:range];
+}
+
+void ui_textarea_select_all(UIWIDGET textarea) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_select_all: widget is not a textarea\n");
+        return;
+    }
+}
+
+void ui_textarea_set_editable(UIWIDGET textarea, UiBool editable) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_set_editable: widget is not a textarea\n");
+        return;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    view.editable = editable;
+}
+
+UiBool ui_textarea_is_editable(UIWIDGET textarea) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_is_editable: widget is not a textarea\n");
+        return 0;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    return view.isEditable;
+}
+
+void ui_textarea_set_position(UIWIDGET textarea, int pos) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_set_position: widget is not a textarea\n");
+        return;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    NSRange range = NSMakeRange(pos, 0);
+    [view setSelectedRange:range];
+}
+
+int ui_textarea_get_position(UIWIDGET textarea) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_get_position: widget is not a textarea\n");
+        return 0;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    NSRange range = view.selectedRange;
+    return (int)range.location;
+}
+
+void ui_textarea_scroll_to(UIWIDGET textarea, int pos) {
+    textarea = ui_textarea_gettextwidget(textarea);
+    if(!textarea) {
+        fprintf(stderr, "Error: ui_textarea_scroll_to: widget is not a textarea\n");
+        return;
+    }
+    NSTextView *view = (__bridge NSTextView*)textarea;
+    NSRange range = NSMakeRange(pos, 0);
+    [view scrollRangeToVisible:range];
+}
+
 
+// UiText textarea functions
 
 void ui_textarea_save(UiText *text) {
     
index df03542be4ceda56d78e983142b50671ec43206d..0e62a7abcb3276514df79bd7cd26932c86210885 100644 (file)
@@ -978,7 +978,7 @@ void ui_list_class_set_iter(UiList *list, void *iter) {
 
 char* ui_text_getsubstr(UiText *text, int begin, int end) {
     if(text->getsubstr) {
-        text->getsubstr(text, begin, end);
+        return text->getsubstr(text, begin, end);
     } else {
         return NULL;
     }