From cea3cfb4932823ee68b47d69d1359f13f7a6a221 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sat, 11 Apr 2026 16:30:41 +0200 Subject: [PATCH] update toolkit --- ui/cocoa/text.m | 48 +++++++++++++++++++++++++++++++++++++++++++++++ ui/cocoa/widget.h | 2 +- ui/cocoa/window.m | 29 ++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/ui/cocoa/text.m b/ui/cocoa/text.m index d359d44..b01a07b 100644 --- a/ui/cocoa/text.m +++ b/ui/cocoa/text.m @@ -258,3 +258,51 @@ void ui_textfield_set(UiString *s, const char *value) { 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; +} diff --git a/ui/cocoa/widget.h b/ui/cocoa/widget.h index 772bf88..5857c86 100644 --- a/ui/cocoa/widget.h +++ b/ui/cocoa/widget.h @@ -27,5 +27,5 @@ */ #import "toolkit.h" -#import "Container.h" +#import "container.h" #import "../ui/widget.h" diff --git a/ui/cocoa/window.m b/ui/cocoa/window.m index a3fe089..7d89edd 100644 --- a/ui/cocoa/window.m +++ b/ui/cocoa/window.m @@ -96,6 +96,35 @@ void ui_window_default_size(int width, int height) { window_default_height = height; } +/* ------------------------------- SplitView Window-------------------------------- */ + +void ui_splitview_window_set_pos(UiObject *obj, int pos) { + MainWindow *window = (__bridge MainWindow*)obj->wobj; + int divider = window.sidebar != nil ? 1 : 0; + [window.splitview setPosition:pos ofDividerAtIndex:divider]; +} + +int ui_splitview_window_get_pos(UiObject *obj) { + MainWindow *window = (__bridge MainWindow*)obj->wobj; + int divider = window.sidebar != nil ? 1 : 0; + return window.splitview.subviews[divider].frame.size.width; +} + +void ui_splitview_window_set_default_pos(int pos) { + splitview_window_default_pos = pos; +} + +void ui_splitview_window_use_property(UiBool enable) { + splitview_window_use_prop = enable; +} + +void ui_splitview_window_set_visible(UiObject *obj, int pane, UiBool visible) { + MainWindow *window = (__bridge MainWindow*)obj->wobj; + if(pane >= 0 && pane < 2) { + window.splitview.subviews[pane].hidden = visible; + } +} + /* --------------------------------- File Dialogs --------------------------------- */ void ui_openfiledialog(UiObject *obj, unsigned int mode, ui_callback file_selected_callback, void *cbdata) { -- 2.47.3