# HG changeset patch
# User Olaf Wintermann <olaf.wintermann@gmail.com>
# Date 1731702335 -3600
# Node ID e3a01a99236d70201e15a1e67e8b54ad0a3b58c6
# Parent  8be7fd628fbce4c85b53fb3fc2dacef410851a98
add ui_dialog_window reference counting (GTK)

diff -r 8be7fd628fbc -r e3a01a99236d ui/gtk/window.c
--- a/ui/gtk/window.c	Fri Nov 15 21:23:16 2024 +0100
+++ b/ui/gtk/window.c	Fri Nov 15 21:25:35 2024 +0100
@@ -694,6 +694,8 @@
     UiObject *obj = cxCalloc(mp->allocator, 1, sizeof(UiObject)); 
     obj->ctx = uic_context(obj, mp);
     obj->widget = dialog;
+    obj->ref = 0;
+    obj->destroy = ui_window_widget_destroy;
     nwindows++;
     
     if(args.title != NULL) {
@@ -721,6 +723,19 @@
             "destroy",
             G_CALLBACK(ui_exit_event),
             obj);
+#if GTK_MAJOR_VERSION >= 4
+    g_signal_connect(
+            obj->widget,
+            "close-request",
+            G_CALLBACK(close_request),
+            obj);
+#else
+    g_signal_connect(
+            obj->widget,
+            "delete-event",
+            G_CALLBACK(close_request),
+            obj);
+#endif
     
 #if GTK_MAJOR_VERSION < 4
     GtkWidget *c = gtk_dialog_get_content_area(GTK_DIALOG(dialog));