diff -r 1b08ba076b65 -r 90a32d739b8e ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Fri Jul 18 21:54:33 2025 +0200 +++ b/ui/gtk/toolkit.c Sun Jul 20 12:27:33 2025 +0200 @@ -66,6 +66,8 @@ static int scale_factor = 1; +static UiBool exit_on_shutdown; + UIEXPORT void ui_init(const char *appname, int argc, char **argv) { application_name = appname; uic_init_global_context(); @@ -110,8 +112,15 @@ exit_data = userdata; } +void ui_app_onexit(void) { + uic_store_app_properties(); +} -#ifndef UI_GTK2 +void ui_app_exit_on_shutdown(UiBool exitapp) { + exit_on_shutdown = exitapp; +} + +#ifdef UI_APPLICATION static void app_startup(GtkApplication* app, gpointer userdata) { if(startup_func) { startup_func(NULL, startup_data); @@ -119,8 +128,16 @@ } static void app_activate(GtkApplication* app, gpointer userdata) { - printf("activate\n"); + //printf("activate\n"); } + +static void app_shutdown(GtkApplication *app, gpointer userdata) { + if(exit_func) { + exit_func(NULL, exit_data); + } + ui_app_onexit(); +} + #endif void ui_main() { @@ -130,6 +147,7 @@ application_name ? application_name : "application1"); app = UI_APPLICATION_NEW(appid.ptr); g_signal_connect (app, "startup", G_CALLBACK (app_startup), NULL); + g_signal_connect (app, "shutdown", G_CALLBACK (app_shutdown), NULL); g_signal_connect (app, "activate", G_CALLBACK (app_activate), NULL); g_application_run(G_APPLICATION (app), 0, NULL); g_object_unref (app); @@ -140,11 +158,14 @@ startup_func(NULL, startup_data); } gtk_main(); -#endif if(exit_func) { exit_func(NULL, exit_data); } - uic_store_app_properties(); + ui_app_onexit(); +#endif + if(exit_on_shutdown) { + exit(0); + } } #ifndef UI_GTK2