diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-01-18 12:34:58 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-01-18 12:34:58 -0500 |
commit | 688085cfafd4dd00dea23e9040fb25ae66783d7c (patch) | |
tree | e3fdb3f21953fb789aa2050c53fe140ae017a5c3 | |
parent | 7257d1c15f6b6600032aac568a6e613add50cd07 (diff) | |
download | gtk+-688085cfafd4dd00dea23e9040fb25ae66783d7c.tar.gz |
builder: Parse some pango types
PangoAttrList and PangoFontDescription
have from-string apis, so we can just
support them as property values.
-rw-r--r-- | gtk/gtkbuilder.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 545699c45c..7e04498db5 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -2322,6 +2322,40 @@ gtk_builder_value_from_string_type (GtkBuilder *builder, { g_value_take_boxed (value, g_bytes_new (string, strlen (string))); } + else if (G_VALUE_HOLDS (value, PANGO_TYPE_FONT_DESCRIPTION)) + { + PangoFontDescription *desc; + + desc = pango_font_description_from_string (string); + if (desc) + g_value_take_boxed (value, desc); + else + { + g_set_error (error, + GTK_BUILDER_ERROR, + GTK_BUILDER_ERROR_INVALID_VALUE, + "Could not parse '%s' as a %s", + string, G_VALUE_TYPE_NAME (value)); + ret = FALSE; + } + } + else if (G_VALUE_HOLDS (value, PANGO_TYPE_ATTR_LIST)) + { + PangoAttrList *attrs; + + attrs = pango_attr_list_from_string (string); + if (attrs) + g_value_take_boxed (value, attrs); + else + { + g_set_error (error, + GTK_BUILDER_ERROR, + GTK_BUILDER_ERROR_INVALID_VALUE, + "Could not parse '%s' as a %s", + string, G_VALUE_TYPE_NAME (value)); + ret = FALSE; + } + } else { g_set_error (error, |