From c04d63ff64201c10099a0471f4e3308b23821b68 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 25 Nov 2019 08:06:45 +0100 Subject: [PATCH] builder: Allow text content in foo is now short for foo ie it looks up the object with the given name so it can then do a property lookup with it. This is the most common operation, so it's a nice shortcut. --- gtk/gtkbuilderparser.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index fe1788f94f..c746d3bb9e 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -1928,6 +1928,27 @@ text (GtkBuildableParseContext *context, g_string_append_len (expr_info->constant.text, text, text_len); } + else if (strcmp (gtk_buildable_parse_context_get_element (context), "lookup") == 0) + { + ExpressionInfo *expr_info = (ExpressionInfo *) info; + + while (g_ascii_isspace (*text) && text_len > 0) + { + text++; + text_len--; + } + while (text_len > 0 && g_ascii_isspace (text[text_len - 1])) + text_len--; + if (expr_info->property.expression == NULL && text_len > 0) + { + ExpressionInfo *constant = g_slice_new0 (ExpressionInfo); + constant->tag_type = TAG_EXPRESSION; + constant->expression_type = EXPRESSION_CONSTANT; + constant->constant.type = G_TYPE_INVALID; + constant->constant.text = g_string_new_len (text, text_len); + expr_info->property.expression = constant; + } + } } static void