diff options
author | Benjamin Otte <otte@redhat.com> | 2019-11-28 02:32:12 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-05-30 19:26:46 -0400 |
commit | b43c8ae6469d0a52bc281d7beff43bca4b03bd80 (patch) | |
tree | 66c7ab433ab250edc0cf1b3ae23be0667e0a7286 /gtk/gtkbuilderparser.c | |
parent | 22e6fa3a64024aef798138db7b6e9a3e0ccd1565 (diff) | |
download | gtk+-b43c8ae6469d0a52bc281d7beff43bca4b03bd80.tar.gz |
expression: Allow passing a this object to bind()
This gives a bit more control over the arguments passed to expressions.
Diffstat (limited to 'gtk/gtkbuilderparser.c')
-rw-r--r-- | gtk/gtkbuilderparser.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index d6e4b87e95..5014b161f4 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -954,7 +954,8 @@ parse_binding (ParserData *data, GError **error) { BindingExpressionInfo *info; - const gchar *name = NULL; + const char *name = NULL; + const char *object_name = NULL; ObjectInfo *object_info; GParamSpec *pspec = NULL; @@ -969,6 +970,7 @@ parse_binding (ParserData *data, if (!g_markup_collect_attributes (element_name, names, values, error, G_MARKUP_COLLECT_STRING, "name", &name, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "object", &object_name, G_MARKUP_COLLECT_INVALID)) { _gtk_builder_prefix_error (data->builder, &data->ctx, error); @@ -1013,6 +1015,7 @@ parse_binding (ParserData *data, info->tag_type = TAG_BINDING_EXPRESSION; info->target = NULL; info->target_pspec = pspec; + info->object_name = g_strdup (object_name); gtk_buildable_parse_context_get_position (&data->ctx, &info->line, &info->col); state_push (data, info); @@ -1538,6 +1541,7 @@ free_binding_expression_info (BindingExpressionInfo *info) { if (info->expr) free_expression_info (info->expr); + g_free (info->object_name); g_slice_free (BindingExpressionInfo, info); } |