Commit b2829ef1 authored by Tristan Van Berkom's avatar Tristan Van Berkom

Support load and save of files with a <template> element.

GladeWidget now has a "parent-name" property which specifies
the class from which a template derives. Loading and Saving
code now takes <template> tags into account.

A GladeWidget is instanciated slightly differently for a <template>
(the parent-name class is used for instantiation).
parent d2bc48ec
......@@ -1478,7 +1478,8 @@ glade_project_count_xml_objects (GladeProject *project,
for (node = glade_xml_node_get_children (root);
node; node = glade_xml_node_next (node))
{
if (glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET))
if (glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE))
count = glade_project_count_xml_objects (project, node, ++count);
else if (glade_xml_node_verify_silent (node, GLADE_XML_TAG_CHILD))
count = glade_project_count_xml_objects (project, node, count);
......@@ -1712,7 +1713,8 @@ glade_project_load_internal (GladeProject *project)
node; node = glade_xml_node_next (node))
{
/* Skip "requires" tags */
if (!glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
continue;
if ((widget = glade_widget_read (project, NULL, node, NULL)) != NULL)
......
......@@ -1169,9 +1169,10 @@ glade_property_write (GladeProperty * property,
g_return_if_fail (GLADE_IS_PROPERTY (property));
g_return_if_fail (node != NULL);
/* This code should work the same for <packing> and <widget> */
/* This code should work the same for <packing>, <widget> and <template> */
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_PACKING) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET)))
glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* There can be a couple of reasons to forcefully save a property */
......
......@@ -160,6 +160,7 @@ struct _GladeWidgetPrivate {
* since the objects copy may be invalid due to a rebuild.
*/
guint rebuilding : 1;
guint composite : 1;
};
enum
......@@ -193,6 +194,7 @@ enum
PROP_TOPLEVEL_HEIGHT,
PROP_SUPPORT_WARNING,
PROP_VISIBLE,
PROP_COMPOSITE,
N_PROPERTIES
};
......@@ -1105,6 +1107,9 @@ glade_widget_set_real_property (GObject * object,
case PROP_TOPLEVEL_HEIGHT:
widget->priv->height = g_value_get_int (value);
break;
case PROP_COMPOSITE:
glade_widget_set_is_composite (widget, g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
......@@ -1161,6 +1166,9 @@ glade_widget_get_real_property (GObject * object,
case PROP_REASON:
g_value_set_int (value, widget->priv->construct_reason);
break;
case PROP_COMPOSITE:
g_value_set_boolean (value, glade_widget_get_is_composite (widget));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
......@@ -1317,6 +1325,11 @@ glade_widget_class_init (GladeWidgetClass * klass)
_("Wether the widget is visible or not"),
FALSE, G_PARAM_READABLE);
properties[PROP_COMPOSITE] =
g_param_spec_boolean ("composite", _("Compisite"),
_("Whether this widget is the template for a composite widget"),
FALSE, G_PARAM_READWRITE);
/* Install all properties */
g_object_class_install_properties (object_class, N_PROPERTIES, properties);
......@@ -2557,6 +2570,57 @@ glade_widget_get_name (GladeWidget * widget)
return widget->priv->name;
}
/**
* glade_widget_set_is_composite:
* @widget: a #GladeWidget
* @composite: whether @widget should be a composite template
*
* Set's this widget to be toplevel composite object to be
* eventually used with gtk_widget_class_set_template()
*
* Only one widget in a project should be composite.
*/
void
glade_widget_set_is_composite (GladeWidget *widget,
gboolean composite)
{
g_return_if_fail (GLADE_IS_WIDGET (widget));
composite = !!composite;
if (widget->priv->composite != composite)
{
GladeProject *project = glade_widget_get_project (widget);
widget->priv->composite = composite;
g_object_notify_by_pspec (G_OBJECT (widget), properties[PROP_COMPOSITE]);
/* Update the project model when this changes */
if (widget->priv->parent == NULL &&
widget->priv->project != NULL &&
glade_project_has_object (widget->priv->project, widget->priv->object))
glade_project_widget_changed (project, widget);
}
}
/**
* glade_widget_get_is_composite:
* @widget: a #GladeWidget
*
* Checks if @widget is a composite template to be used
* with gtk_widget_class_set_template().
*
* Returns: whether @widget is composite.
*/
gboolean
glade_widget_get_is_composite (GladeWidget *widget)
{
g_return_val_if_fail (GLADE_IS_WIDGET (widget), FALSE);
return widget->priv->composite;
}
/**
* glade_widget_set_internal:
* @widget: A #GladeWidget
......@@ -3757,13 +3821,18 @@ glade_widget_read (GladeProject * project,
{
GladeWidgetAdaptor *adaptor;
GladeWidget *widget = NULL;
gchar *klass, *id;
gchar *klass, *id = NULL, *template_parent = NULL;
gboolean template = FALSE;
if (glade_project_load_cancelled (project))
return NULL;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
return NULL;
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return NULL;
if (glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE))
template = TRUE;
glade_widget_push_superuser ();
......@@ -3771,15 +3840,25 @@ glade_widget_read (GladeProject * project,
glade_xml_get_property_string_required
(node, GLADE_XML_TAG_CLASS, NULL)) != NULL)
{
if ((id =
glade_xml_get_property_string_required
(node, GLADE_XML_TAG_ID, NULL)) != NULL)
{
if (template)
{
template_parent = glade_xml_get_property_string_required (node, GLADE_TAG_PARENT, NULL);
if (template_parent)
id = g_strdup (klass);
}
else
id = glade_xml_get_property_string_required (node, GLADE_XML_TAG_ID, NULL);
if (id)
{
GType type;
const gchar *type_to_use = template_parent ? template_parent : klass;
/*
* Create GladeWidget instance based on type.
*/
if ((adaptor = glade_widget_adaptor_get_by_name (klass)) &&
if ((adaptor = glade_widget_adaptor_get_by_name (type_to_use)) &&
(type = glade_widget_adaptor_get_object_type (adaptor)) &&
G_TYPE_IS_INSTANTIATABLE (type) &&
G_TYPE_IS_ABSTRACT (type) == FALSE)
......@@ -3810,6 +3889,7 @@ glade_widget_read (GladeProject * project,
widget = glade_widget_adaptor_create_widget
(adaptor, FALSE,
"name", id,
"composite", template,
"parent", parent,
"project", project, "reason", GLADE_CREATE_LOAD, NULL);
}
......@@ -3826,6 +3906,7 @@ glade_widget_read (GladeProject * project,
widget = glade_widget_adaptor_create_widget (glade_widget_adaptor_get_by_type (GTK_TYPE_WIDGET),
FALSE,
"parent", parent,
"composite", template,
"project", project,
"reason", GLADE_CREATE_LOAD,
"object", stub,
......@@ -3834,6 +3915,7 @@ glade_widget_read (GladeProject * project,
}
g_free (id);
}
g_free (template_parent);
g_free (klass);
}
......@@ -4030,15 +4112,28 @@ glade_widget_write (GladeWidget * widget,
return;
}
widget_node = glade_xml_node_new (context, GLADE_XML_TAG_WIDGET);
glade_xml_node_append_child (node, widget_node);
/* Set class and id */
glade_xml_node_set_property_string (widget_node,
GLADE_XML_TAG_CLASS,
glade_widget_adaptor_get_name (widget->priv->adaptor));
glade_xml_node_set_property_string (widget_node,
GLADE_XML_TAG_ID, widget->priv->name);
if (widget->priv->composite)
{
widget_node = glade_xml_node_new (context, GLADE_XML_TAG_TEMPLATE);
glade_xml_node_set_property_string (widget_node,
GLADE_XML_TAG_CLASS,
widget->priv->name);
glade_xml_node_set_property_string (widget_node,
GLADE_TAG_PARENT,
glade_widget_adaptor_get_name (widget->priv->adaptor));
}
else
{
widget_node = glade_xml_node_new (context, GLADE_XML_TAG_WIDGET);
glade_xml_node_set_property_string (widget_node,
GLADE_XML_TAG_CLASS,
glade_widget_adaptor_get_name (widget->priv->adaptor));
glade_xml_node_set_property_string (widget_node,
GLADE_XML_TAG_ID, widget->priv->name);
}
glade_xml_node_append_child (node, widget_node);
/* Write out widget content (properties and signals) */
glade_widget_adaptor_write_widget (widget->priv->adaptor, widget, context,
......
......@@ -339,6 +339,11 @@ void glade_widget_set_name (GladeWidget *widget,
G_CONST_RETURN gchar *glade_widget_get_name (GladeWidget *widget);
void glade_widget_set_is_composite (GladeWidget *widget,
gboolean composite);
gboolean glade_widget_get_is_composite (GladeWidget *widget);
void glade_widget_set_internal (GladeWidget *widget,
const gchar *internal);
......
......@@ -36,6 +36,7 @@ typedef struct _GladeProject GladeProject;
/* Used for catalog tags and attributes */
#define GLADE_XML_TAG_PROJECT "interface"
#define GLADE_XML_TAG_WIDGET "object"
#define GLADE_XML_TAG_TEMPLATE "template"
#define GLADE_XML_TAG_VERSION "version"
#define GLADE_XML_TAG_REQUIRES "requires"
......
......@@ -419,7 +419,8 @@ void
glade_gtk_widget_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -695,7 +696,8 @@ glade_gtk_widget_write_widget (GladeWidgetAdaptor * adaptor,
{
GObject *obj;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* Make sure use-action-appearance and related-action properties are
......@@ -2937,7 +2939,8 @@ glade_gtk_entry_read_widget (GladeWidgetAdaptor * adaptor,
{
GladeProperty *property;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -3177,7 +3180,8 @@ void
glade_gtk_window_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -3223,7 +3227,8 @@ glade_gtk_window_write_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget,
GladeXmlContext * context, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -3819,7 +3824,8 @@ void
glade_gtk_button_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -3837,7 +3843,8 @@ glade_gtk_button_write_widget (GladeWidgetAdaptor * adaptor,
gboolean use_stock;
gchar *stock = NULL;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* Do not save GtkColorButton GtkFontButton and GtkScaleButton label property */
......@@ -3875,7 +3882,8 @@ glade_gtk_image_read_widget (GladeWidgetAdaptor * adaptor,
{
GladeProperty *property;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -3946,7 +3954,9 @@ glade_gtk_image_write_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget,
GladeXmlContext * context, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and write all the normal properties (including "use-stock")... */
......@@ -5080,7 +5090,8 @@ glade_gtk_image_menu_item_read_widget (GladeWidgetAdaptor * adaptor,
gboolean use_stock;
gchar *label = NULL;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -5119,7 +5130,8 @@ glade_gtk_image_menu_item_write_widget (GladeWidgetAdaptor * adaptor,
gboolean use_stock;
gchar *stock;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* Make a copy of the GladeProperty, override its value if use-stock is TRUE */
......@@ -5574,7 +5586,8 @@ glade_gtk_toolbar_write_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget,
GladeXmlContext * context, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and write all the normal properties (including "use-stock")... */
......@@ -5839,7 +5852,8 @@ void
glade_gtk_tool_item_group_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -6147,7 +6161,8 @@ void
glade_gtk_tool_button_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -6633,7 +6648,9 @@ glade_gtk_label_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
GladeProperty *prop;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -6719,7 +6736,8 @@ glade_gtk_label_write_widget (GladeWidgetAdaptor * adaptor,
{
GladeXmlNode *attrs_node;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -7160,7 +7178,8 @@ void
glade_gtk_combo_box_text_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -7214,7 +7233,8 @@ glade_gtk_combo_box_text_write_widget (GladeWidgetAdaptor * adaptor,
{
GladeXmlNode *attrs_node;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -7745,7 +7765,8 @@ void
glade_gtk_size_group_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -7793,7 +7814,8 @@ glade_gtk_size_group_write_widget (GladeWidgetAdaptor * adaptor,
GladeXmlContext * context,
GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -7993,7 +8015,8 @@ void
glade_gtk_icon_factory_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in any normal properties.. */
......@@ -8101,7 +8124,8 @@ glade_gtk_icon_factory_write_widget (GladeWidgetAdaptor * adaptor,
GladeXmlContext * context,
GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and write all the normal properties.. */
......@@ -8781,7 +8805,8 @@ glade_gtk_store_write_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget,
GladeXmlContext * context, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and write all the normal properties.. */
......@@ -8987,7 +9012,8 @@ void
glade_gtk_store_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -9227,7 +9253,8 @@ glade_gtk_cell_renderer_write_widget (GladeWidgetAdaptor * adaptor,
GladeXmlContext * context,
GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* Write our normal properties, then chain up to write any other normal properties,
......@@ -9283,7 +9310,8 @@ void
glade_gtk_cell_renderer_read_widget (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the properties... */
......@@ -10010,7 +10038,8 @@ glade_gtk_adjustment_write_widget (GladeWidgetAdaptor * adaptor,
{
GladeProperty *prop;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* Ensure proper order of adjustment properties by writing them here. */
......@@ -10550,7 +10579,8 @@ glade_gtk_recent_filter_read_widget (GladeWidgetAdaptor *adaptor,
GladeWidget *widget,
GladeXmlNode *node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -10569,7 +10599,8 @@ glade_gtk_recent_filter_write_widget (GladeWidgetAdaptor *adaptor,
{
GladeXmlNode *strings_node;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -10608,7 +10639,8 @@ glade_gtk_file_filter_read_widget (GladeWidgetAdaptor *adaptor,
GladeWidget *widget,
GladeXmlNode *node)
{
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......@@ -10626,7 +10658,8 @@ glade_gtk_file_filter_write_widget (GladeWidgetAdaptor *adaptor,
{
GladeXmlNode *strings_node;
if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET))
if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
return;
/* First chain up and read in all the normal properties.. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment