ui/gtk/toolkit.c

changeset 108
77254bd6dccb
parent 103
6606616eca9f
child 109
c3dfcb8f0be7
--- 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);

mercurial