builder-tool Make preview closeable
authorTimm Bäder <mail@baedert.org>
Mon, 18 May 2020 12:02:32 +0000 (14:02 +0200)
committerTimm Bäder <mail@baedert.org>
Tue, 19 May 2020 06:32:33 +0000 (08:32 +0200)
gtk/tools/gtk-builder-tool-preview.c

index 473aabd558fcb9159b5a15569fffcee203bad7a9..d40b9d96a33ba5613f57c62a867986cf2f86aa8a 100644 (file)
@@ -50,6 +50,17 @@ set_window_title (GtkWindow  *window,
   g_free (name);
 }
 
+static void
+quit_cb (GtkWidget *widget,
+         gpointer   user_data)
+{
+  gboolean *is_done = user_data;
+
+  *is_done = TRUE;
+
+  g_main_context_wakeup (NULL);
+}
+
 static void
 preview_file (const char *filename,
               const char *id,
@@ -59,6 +70,7 @@ preview_file (const char *filename,
   GError *error = NULL;
   GObject *object;
   GtkWidget *window;
+  gboolean done = FALSE;
 
   if (cssfile)
     {
@@ -144,8 +156,9 @@ preview_file (const char *filename,
     }
 
   gtk_window_present (GTK_WINDOW (window));
+  g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);
 
-  while (TRUE)
+  while (!done)
     g_main_context_iteration (NULL, TRUE);
 
   g_object_unref (builder);