[gtk/wip/hadess/gtkbuilder-initable-gtk3: 1/2] gtkbuilder: Add support for GInitable objects
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/hadess/gtkbuilder-initable-gtk3: 1/2] gtkbuilder: Add support for GInitable objects
- Date: Wed, 9 Feb 2022 10:22:03 +0000 (UTC)
commit 2b6f80da8c8fe21dd5b4194d45457dc08e8cc005
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.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4687
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]