diff options
author | Benjamin Otte <otte@redhat.com> | 2019-06-04 06:09:31 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2019-06-04 06:11:44 +0200 |
commit | 836635d1ae6d9b62d578622b9f0691cc0fd67cb5 (patch) | |
tree | 52fc805d6f96e57372cbe515d817ae8417356b84 /gtk/gtkbuilder.c | |
parent | 6a0e0031b194b0a7863f75e56619412f876d17ca (diff) | |
download | gtk+-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.c | 21 |
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; |