subparser->object = object;
subparser->child = child;
subparser->tagname = g_strdup (element_name);
+ subparser->level = 1;
subparser->start = element_name;
subparser->parser = g_memdup2 (parser, sizeof (GtkBuildableParser));
subparser->data = user_data;
if (subparser->start)
{
+ subparser->level++;
+
if (subparser->parser->start_element)
subparser->parser->start_element (context,
element_name, names, values,
ParserData *data,
GError **error)
{
+ data->subparser->level--;
+
if (data->subparser->parser->end_element)
data->subparser->parser->end_element (context, element_name,
data->subparser->data, error);
if (*error)
return;
- if (strcmp (data->subparser->start, element_name) != 0)
+ if (data->subparser->level > 0)
return;
+ g_assert (strcmp (data->subparser->start, element_name) == 0);
+
gtk_buildable_custom_tag_end (GTK_BUILDABLE (data->subparser->object),
data->builder,
data->subparser->child,