[gtk/wip/otte/builder: 5/10] widget: Reinstate custom closure func



commit ab53731f4acc0b19b611a2eccd8867870d99aced
Author: Benjamin Otte <otte redhat com>
Date:   Thu Nov 21 21:30:38 2019 +0100

    widget: Reinstate custom closure func
    
    It turns out it ws used in various places.

 gtk/gtkwidget.c | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 2cd54e13f2..fcb683f050 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -12113,6 +12113,34 @@ setup_template_child (GtkWidgetTemplate   *template_data,
   return TRUE;
 }
 
+static void
+gtk_widget_template_connect_func (GtkBuilder    *builder,
+                                 GObject       *object,
+                                 const gchar   *signal_name,
+                                 const gchar   *handler_name,
+                                 GObject       *connect_object,
+                                 GConnectFlags  flags,
+                                 gpointer       user_data)
+{
+  GClosure *closure;
+  GError *error = NULL;
+
+  closure = gtk_builder_create_closure (builder,
+                                        handler_name,
+                                        flags & G_CONNECT_SWAPPED ? TRUE : FALSE,
+                                        connect_object ? connect_object : user_data,
+                                        &error);
+
+  if (error)
+    {
+      g_warning ("%s", error->message);
+      g_error_free (error);
+      return;
+    }
+
+  g_signal_connect_closure (object, signal_name, closure, flags & G_CONNECT_AFTER ? TRUE : FALSE);
+}
+
 /**
  * gtk_widget_init_template:
  * @widget: a #GtkWidget
@@ -12212,7 +12240,7 @@ gtk_widget_init_template (GtkWidget *widget)
   if (template->connect_func)
     gtk_builder_connect_signals_full (builder, template->connect_func, template->connect_data);
   else
-    gtk_builder_connect_signals (builder);
+    gtk_builder_connect_signals_full (builder, gtk_widget_template_connect_func, widget);
 
   g_object_unref (builder);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]