diff -r b34bd1557c6c -r 77254bd6dccb ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Sat Apr 05 17:57:04 2025 +0200 +++ b/ui/gtk/toolkit.c Sun Jul 20 22:04:39 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,11 @@ exit_data = userdata; } +void ui_app_exit_on_shutdown(UiBool exitapp) { + exit_on_shutdown = exitapp; +} -#ifndef UI_GTK2 +#ifdef UI_APPLICATION static void app_startup(GtkApplication* app, gpointer userdata) { if(startup_func) { startup_func(NULL, startup_data); @@ -119,8 +124,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_save_settings(); +} + #endif void ui_main() { @@ -130,6 +143,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 +154,14 @@ startup_func(NULL, startup_data); } gtk_main(); -#endif if(exit_func) { exit_func(NULL, exit_data); } - uic_store_app_properties(); + ui_app_save_settings(); +#endif + if(exit_on_shutdown) { + exit(0); + } } #ifndef UI_GTK2 @@ -191,6 +208,7 @@ event.document = job->obj->ctx->document; event.intval = 0; event.eventdata = NULL; + event.eventdatatype = 0; job->finish_callback(&event, job->finish_data); free(job);