From: Olaf Wintermann Date: Thu, 30 Apr 2026 18:54:39 +0000 (+0200) Subject: update toolkit X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;ds=sidebyside;p=note.git update toolkit --- diff --git a/ui/cocoa/text.m b/ui/cocoa/text.m index 00a0877..0d6100b 100644 --- a/ui/cocoa/text.m +++ b/ui/cocoa/text.m @@ -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) { diff --git a/ui/common/types.c b/ui/common/types.c index df03542..0e62a7a 100644 --- a/ui/common/types.c +++ b/ui/common/types.c @@ -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; }