]> uap-core.de Git - note.git/commitdiff
fix lifecycle of app name string in app_init
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 30 Mar 2026 17:19:18 +0000 (19:19 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 30 Mar 2026 17:19:18 +0000 (19:19 +0200)
application/src/main.rs
ui-rs/src/ui/toolkit.rs
ui/cocoa/appdelegate.m
ui/cocoa/button.m
ui/cocoa/toolkit.m
ui/server/toolkit.c
ui/ui/icons.h
ui/ui/toolkit.h
ui/win32/toolkit.c
ui/winui/toolkit.cpp

index a584c1e2e46d82f16e832d72e800ff55685bdd12..097f1c4b8e25762ef80b555c80665f1c87e46a1a 100644 (file)
@@ -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();
     }
 }
index ab5b688c0e529034389130fb4b588c48fd08d252..e9281a1aa5acad5b96e4dc311bbcc58c46c9efbd 100644 (file)
@@ -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());
     }
 }
index 82d90206b11dbf501a54e33e8a928b914cf59bf5..f0967edf57f54307e9062f8e330255c7e1d69101 100644 (file)
@@ -40,7 +40,6 @@
 }
 
 - (void)applicationWillTerminate:(NSNotification *)aNotification {
-    NSLog(@"toolkit applicationWillTerminate");
     ui_cocoa_onexit();
 }
 
index e34049d716e40ad98a1403074ff2b2fd9b2f744a..a2af1a4885477d4d244a658367622034e428f9b7 100644 (file)
@@ -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);
index 50bfcdbf0e7e574f5c74a061853193aa28c083d8..4ef962c2c6cea6d7a3f9e6c71471a21c276efb4c 100644 (file)
@@ -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) {
index fd0b57d6dcd95200ea912bc8ed18d7f7cbff1efa..815e118a1b06dbec86470610aa4adf0d4bae6acf 100644 (file)
@@ -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);
     
index 6589cc9a2ddc68e7edc700d285290c269834f82f..9bc86a44927ced04df40d59a9cfd3c62ab5ed490 100644 (file)
@@ -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);
index fb8c349790e3885bbc0e5f28ffc549125cd72040..b798e664b7d53699edf528a3e38b9c2b9ff32d63 100644 (file)
@@ -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);
 
index a692aec44ce54ccf67e68ecdeebbe5d145287c7b..885342d217ff95b59757c9348fac877dbfa36d93 100644 (file)
@@ -41,6 +41,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <commctrl.h>
 
@@ -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();
index 42e2b8db3bec2ad61b25b532fe4e446029d17dea..92fea249a71c0dcfcf24d9af2867476628d77c3a 100644 (file)
@@ -33,6 +33,9 @@
 #include <cx/allocator.h>\r
 #include <cx/mempool.h>\r
 \r
+#include <stdlib.h>\r
+#include <string.h>\r
+\r
 #include "../common/context.h"\r
 #include "../common/document.h"\r
 #include "../common/toolbar.h"\r
@@ -147,7 +150,7 @@ void ui_appsdk_bootstrap(void) {
 }\r
 \r
 void ui_init(const char* appname, int argc, char** argv) {\r
-       application_name = appname;\r
+       application_name = appname ? strdup(appname) : NULL;\r
 \r
        //ui_appsdk_bootstrap();\r
 \r