summaryrefslogtreecommitdiff
path: root/gtk/gtkbuilderparser.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2019-11-28 02:32:12 +0100
committerMatthias Clasen <mclasen@redhat.com>2020-05-30 19:26:46 -0400
commitb43c8ae6469d0a52bc281d7beff43bca4b03bd80 (patch)
tree66c7ab433ab250edc0cf1b3ae23be0667e0a7286 /gtk/gtkbuilderparser.c
parent22e6fa3a64024aef798138db7b6e9a3e0ccd1565 (diff)
downloadgtk+-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.c6
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);
}