summaryrefslogtreecommitdiff
path: root/gtk/gtkbuilder.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2019-06-04 06:09:31 +0200
committerBenjamin Otte <otte@redhat.com>2019-06-04 06:11:44 +0200
commit836635d1ae6d9b62d578622b9f0691cc0fd67cb5 (patch)
tree52fc805d6f96e57372cbe515d817ae8417356b84 /gtk/gtkbuilder.c
parent6a0e0031b194b0a7863f75e56619412f876d17ca (diff)
downloadgtk+-836635d1ae6d9b62d578622b9f0691cc0fd67cb5.tar.gz
builder: Allow values of type GType
In particular this allows setting the item-type property of GListStore.
Diffstat (limited to 'gtk/gtkbuilder.c')
-rw-r--r--gtk/gtkbuilder.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index 63cb6a6a2e..47dface108 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -2215,6 +2215,27 @@ gtk_builder_value_from_string_type (GtkBuilder *builder,
else
ret = FALSE;
break;
+ case G_TYPE_POINTER:
+ if (G_VALUE_HOLDS (value, G_TYPE_GTYPE))
+ {
+ GType resolved_type;
+
+ resolved_type = gtk_builder_get_type_from_name (builder, string);
+ if (resolved_type == G_TYPE_INVALID)
+ {
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_INVALID_VALUE,
+ "Unsupported GType '%s' for value of type 'GType'", string);
+ return FALSE;
+ }
+ g_value_set_gtype (value, resolved_type);
+
+ ret = TRUE;
+ }
+ else
+ ret = FALSE;
+ break;
default:
ret = FALSE;
break;