summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-01-18 12:34:58 -0500
committerMatthias Clasen <mclasen@redhat.com>2022-01-18 12:34:58 -0500
commit688085cfafd4dd00dea23e9040fb25ae66783d7c (patch)
treee3fdb3f21953fb789aa2050c53fe140ae017a5c3
parent7257d1c15f6b6600032aac568a6e613add50cd07 (diff)
downloadgtk+-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.c34
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,