[gtk/wip/hadess/gtkbuilder-initable-gtk3: 1/2] gtkbuilder: Add support for GInitable objects




commit 6df29f45d0c1f5a0dec03cfdd32671b74e92e95c
Author: Bastien Nocera <hadess hadess net>
Date:   Tue Feb 8 17:09:00 2022 +0100

    gtkbuilder: Add support for GInitable objects
    
    Add support for objects which should be instantiated through the
    GInitable interface, and print warnings when errors occur.

 gtk/gtkbuilder.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index 886913b40a..a8e90a32c0 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -730,9 +730,26 @@ _gtk_builder_construct (GtkBuilder  *builder,
   else
     {
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-      obj = g_object_newv (info->type,
-                           construct_parameters->len,
-                           (GParameter *)construct_parameters->data);
+      if (G_TYPE_IS_INITABLE(info->type))
+        {
+          obj = g_initable_newv (info->type,
+                                 construct_parameters->len,
+                                 (GParameter *)construct_parameters->data,
+                                 NULL,
+                                 error);
+          if (!obj)
+            {
+              g_array_free (parameters, TRUE);
+              g_array_free (construct_parameters, TRUE);
+              return NULL;
+            }
+        }
+      else
+        {
+          obj = g_object_newv (info->type,
+                               construct_parameters->len,
+                               (GParameter *)construct_parameters->data);
+        }
 G_GNUC_END_IGNORE_DEPRECATIONS
 
       /* No matter what, make sure we have a reference.


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