From: Olaf Wintermann Date: Mon, 30 Mar 2026 17:19:18 +0000 (+0200) Subject: fix lifecycle of app name string in app_init X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=835c8cedddc8f3bf11ead32b08553c0fbacc2d7a;p=note.git fix lifecycle of app name string in app_init --- diff --git a/application/src/main.rs b/application/src/main.rs index a584c1e..097f1c4 100644 --- a/application/src/main.rs +++ b/application/src/main.rs @@ -1,7 +1,7 @@ use ui_rs::ui; fn main() { - ui::app_init(Default::default()); + ui::app_init("note"); let mut app = App; ui::app_run(&mut app); @@ -11,7 +11,7 @@ struct App; impl ui::Application for App { fn on_startup(&self) { - let obj = ui::window("Test Window"); + let obj = ui::window("note"); obj.show(); } } diff --git a/ui-rs/src/ui/toolkit.rs b/ui-rs/src/ui/toolkit.rs index ab5b688..e9281a1 100644 --- a/ui-rs/src/ui/toolkit.rs +++ b/ui-rs/src/ui/toolkit.rs @@ -12,13 +12,15 @@ extern "C" { } pub fn app_init(appname: &str) { + let s; + let c_str = if appname.len() > 0 { + s = CString::new(appname).unwrap(); + s.as_ptr() + } else { + std::ptr::null() + }; + unsafe { - let c_str = if appname.len() > 0 { - let s = CString::new(appname).unwrap(); - s.as_ptr() - } else { - std::ptr::null() - }; ui_init(c_str, 0, std::ptr::null()); } } diff --git a/ui/cocoa/appdelegate.m b/ui/cocoa/appdelegate.m index 82d9020..f0967ed 100644 --- a/ui/cocoa/appdelegate.m +++ b/ui/cocoa/appdelegate.m @@ -40,7 +40,6 @@ } - (void)applicationWillTerminate:(NSNotification *)aNotification { - NSLog(@"toolkit applicationWillTerminate"); ui_cocoa_onexit(); } diff --git a/ui/cocoa/button.m b/ui/cocoa/button.m index e34049d..a2af1a4 100644 --- a/ui/cocoa/button.m +++ b/ui/cocoa/button.m @@ -370,7 +370,7 @@ static char* create_linkbutton_jsonvalue(const char *label, const char *uri, UiB CxJsonWriter writer = cxJsonWriterCompact(); CxBuffer buf; - cxBufferInit(&buf, NULL, NULL, 128, CX_BUFFER_AUTO_EXTEND); + cxBufferInit(&buf, NULL, NULL, 128, bCX_BUFFER_AUTO_EXTEND); cxJsonWrite(&buf, obj, (cx_write_func)cxBufferWrite, &writer); cxJsonValueFree(obj); cxBufferTerminate(&buf); diff --git a/ui/cocoa/toolkit.m b/ui/cocoa/toolkit.m index 50bfcdb..4ef962c 100644 --- a/ui/cocoa/toolkit.m +++ b/ui/cocoa/toolkit.m @@ -54,7 +54,6 @@ static UiBool exit_on_shutdown; /* ------------------- App Init / Event Loop functions ------------------- */ -static AppDelegate *app_delegate; void ui_init(const char *appname, int argc, char **argv) { application_name = appname ? strdup(appname) : NULL; @@ -62,28 +61,24 @@ void ui_init(const char *appname, int argc, char **argv) { app_argv = (const char**)argv; uic_init_global_context(); - + uic_menu_init(); uic_toolbar_init(); - + uic_load_app_properties(); - + NSApplication *app = [NSApplication sharedApplication]; - [app setActivationPolicy:NSApplicationActivationPolicyRegular]; + //[app setActivationPolicy:NSApplicationActivationPolicyRegular]; //[NSBundle loadNibNamed:@"MainMenu" owner:NSApp ]; //[[NSBundle mainBundle] loadNibNamed:@"MainMenu" owner:NSApp topLevelObjects:&topLevelObjects]; - app_delegate = [[AppDelegate alloc] init]; - app.delegate = app_delegate; - - ui_icon_init(); ui_toolbar_init(); } -const char* ui_appname(void) { +const char* ui_appname() { return application_name; } @@ -136,10 +131,6 @@ void ui_app_unref(void) { // TODO } -void ui_app_quit(void) { - [[NSApplication sharedApplication] terminate:nil]; -} - /* ------------------- Window Visibility functions ------------------- */ void ui_show(UiObject *obj) { diff --git a/ui/server/toolkit.c b/ui/server/toolkit.c index fd0b57d..815e118 100644 --- a/ui/server/toolkit.c +++ b/ui/server/toolkit.c @@ -53,7 +53,7 @@ static CxMap *srv_obj_map; static uint64_t srv_obj_id_counter = 0; void ui_init(const char *appname, int argc, char **argv) { - ui_app_name = appname; + ui_app_name = appname ? strdup(appname) : NULL; message_handler = uic_simple_msg_handler(STDIN_FILENO, STDOUT_FILENO, ui_server_message_received); diff --git a/ui/ui/icons.h b/ui/ui/icons.h index 6589cc9..9bc86a4 100644 --- a/ui/ui/icons.h +++ b/ui/ui/icons.h @@ -74,25 +74,6 @@ extern "C" { #define UI_ICON_GO_DOWN "" // TODO: implement workaround for missing down symbol #endif /* UI_WINUI */ - -#ifdef UI_COCOA - -#define UI_ICON_HOME "NSImageNameHomeTemplate" -#define UI_ICON_NEW_WINDOW "" -#define UI_ICON_REFRESH "NSImageNameRefreshTemplate" -#define UI_ICON_NEW_FOLDER "" -#define UI_ICON_ADD "NSImageNameAddTemplate" -#define UI_ICON_UPLOAD "" -#define UI_ICON_SAVE_LOCAL "" -#define UI_ICON_DELETE "" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" -#define UI_ICON_GO_BACK "NSImageNameGoLeftTemplate" -#define UI_ICON_GO_FORWARD "NSImageNameGoRightTemplate" -#define UI_ICON_GO_UP "" -#define UI_ICON_GO_DOWN "" - -#endif /* UI_COCOA */ UIEXPORT UiIcon* ui_icon(const char* name, size_t size); diff --git a/ui/ui/toolkit.h b/ui/ui/toolkit.h index fb8c349..b798e66 100644 --- a/ui/ui/toolkit.h +++ b/ui/ui/toolkit.h @@ -529,7 +529,7 @@ struct UiTextStyle { UIEXPORT void ui_init(const char *appname, int argc, char **argv); -UIEXPORT const char* ui_appname(void); +UIEXPORT const char* ui_appname(); UIEXPORT void ui_add_styledata(const char *styledata, int len); diff --git a/ui/win32/toolkit.c b/ui/win32/toolkit.c index a692aec..885342d 100644 --- a/ui/win32/toolkit.c +++ b/ui/win32/toolkit.c @@ -41,6 +41,7 @@ #include #include +#include #include @@ -49,7 +50,7 @@ static const char *application_name; static HFONT ui_font = NULL; void ui_init(const char *appname, int argc, char **argv) { - application_name = appname; + application_name = appname ? strdup(appname) : NULL; uic_init_global_context(); uic_menu_init(); diff --git a/ui/winui/toolkit.cpp b/ui/winui/toolkit.cpp index 42e2b8d..92fea24 100644 --- a/ui/winui/toolkit.cpp +++ b/ui/winui/toolkit.cpp @@ -33,6 +33,9 @@ #include #include +#include +#include + #include "../common/context.h" #include "../common/document.h" #include "../common/toolbar.h" @@ -147,7 +150,7 @@ void ui_appsdk_bootstrap(void) { } void ui_init(const char* appname, int argc, char** argv) { - application_name = appname; + application_name = appname ? strdup(appname) : NULL; //ui_appsdk_bootstrap();