From 9682085e09c3d46cc9b0fb96c9218efe7bd86df5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 18 Nov 2022 10:37:42 -0500 Subject: [PATCH] builder: Parse PangoAttrList values Allow specifying PangoAttrList properties in the serialized format supported by pango_attr_list_to_string(). Test included. --- gtk/gtkbuilder.c | 17 +++++++++++++++++ testsuite/gtk/ui/label6.expected | 1 + testsuite/gtk/ui/label6.ui | 25 +++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 testsuite/gtk/ui/label6.expected create mode 100644 testsuite/gtk/ui/label6.ui diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 546e758b2e..36f3a1edcb 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -2325,6 +2325,23 @@ 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_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 PangoAttrList '%s'", + string); + ret = FALSE; + } + } else { g_set_error (error, diff --git a/testsuite/gtk/ui/label6.expected b/testsuite/gtk/ui/label6.expected new file mode 100644 index 0000000000..ff43ca4091 --- /dev/null +++ b/testsuite/gtk/ui/label6.expected @@ -0,0 +1 @@ +SUCCESS diff --git a/testsuite/gtk/ui/label6.ui b/testsuite/gtk/ui/label6.ui new file mode 100644 index 0000000000..a639d7b125 --- /dev/null +++ b/testsuite/gtk/ui/label6.ui @@ -0,0 +1,25 @@ + + + + + 5 10 language de + 0 -1 style italic + 0 -1 weight bold + 0 -1 variant normal + 0 -1 stretch ultra-expanded + 0 -1 underline double + 0 -1 strikethrough true + 0 -1 gravity north + 0 -1 gravity-hint line + 0 -1 family "sans" + 0 -1 size 10 + 0 -1 absolute-size 10 + 0 -1 font-desc "Cantarell 11" + 0 -1 foreground yellow + 0 -1 background red + 0 -1 underline-color green + 0 -1 strikethrough-color purple + 0 -1 scale 1.5 + + + -- 2.30.2