diff --git a/gtk/gtktexttagtable.c b/gtk/gtktexttagtable.c
index b1a99ffd12..ea68ad9ba2 100644
--- a/gtk/gtktexttagtable.c
+++ b/gtk/gtktexttagtable.c
@@ -28,6 +28,7 @@
#include "gtktexttagtable.h"
+#include "gtkbuildable.h"
#include "gtktexttagprivate.h"
#include "gtkmarshalers.h"
#include "gtktextbuffer.h" /* just for the lame notify_will_remove_tag hack */
@@ -44,9 +45,26 @@
* You may wish to begin by reading the text widget
* conceptual overview which gives an overview of all the objects and data
* types related to the text widget and how they work together.
+ *
+ *
+ * GtkTextTagTables as GtkBuildable
+ *
+ * The GtkTextTagTable implementation of the GtkBuildable interface
+ * supports adding tags by specifying "tag" as the "type"
+ * attribute of a <child> element.
+ *
+ *
+ * A UI definition fragment specifying tags
+ *
+ *
+ *
+ *
+ *
+ * ]]>
+ *
*/
-
struct _GtkTextTagTablePrivate
{
GHashTable *hash;
@@ -78,9 +96,17 @@ static void gtk_text_tag_table_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
+static void gtk_text_tag_table_buildable_interface_init (GtkBuildableIface *iface);
+static void gtk_text_tag_table_buildable_add_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ GObject *child,
+ const gchar *type);
+
static guint signals[LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (GtkTextTagTable, gtk_text_tag_table, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_CODE (GtkTextTagTable, gtk_text_tag_table, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
+ gtk_text_tag_table_buildable_interface_init))
static void
gtk_text_tag_table_class_init (GtkTextTagTableClass *klass)
@@ -246,6 +272,23 @@ gtk_text_tag_table_get_property (GObject *object,
}
}
+static void
+gtk_text_tag_table_buildable_interface_init (GtkBuildableIface *iface)
+{
+ iface->add_child = gtk_text_tag_table_buildable_add_child;
+}
+
+static void
+gtk_text_tag_table_buildable_add_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ GObject *child,
+ const gchar *type)
+{
+ if (type && strcmp (type, "tag") == 0)
+ gtk_text_tag_table_add (GTK_TEXT_TAG_TABLE (buildable),
+ GTK_TEXT_TAG (child));
+}
+
/**
* gtk_text_tag_table_add:
* @table: a #GtkTextTagTable