diff --git a/docs/reference/gtk/tmpl/gtkbuildable.sgml b/docs/reference/gtk/tmpl/gtkbuildable.sgml
index 16857ae..935a2c7 100644
--- a/docs/reference/gtk/tmpl/gtkbuildable.sgml
+++ b/docs/reference/gtk/tmpl/gtkbuildable.sgml
@@ -41,10 +41,8 @@ a GtkBuilder UI definition.
 
 @g_iface: the parent class
 @set_name: Stores the name attribute given in the GtkBuilder UI definition.
-  #GtkWidget maps this to the #GtkWidget:name property, and 
-  gtk_buildable_set_name() has a fallback implementation that stores
-  the name as object data. Implement this method if your object
-  has some notion of "name" and it makes sense to map the XML name
+  #GtkWidget stores the name as object data. Implement this method if your
+  object has some notion of "name" and it makes sense to map the XML name
   attribute to it.
 @get_name: The getter corresponding to @set_name. Implement this
   if you implement @set_name.
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 36bbcb4..69a64d8 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -10076,13 +10076,14 @@ static void
 gtk_widget_buildable_set_name (GtkBuildable *buildable,
 			       const gchar  *name)
 {
-  gtk_widget_set_name (GTK_WIDGET (buildable), name);
+  g_object_set_data_full (G_OBJECT (buildable), "gtk-builder-name",
+                          g_strdup (name), (GDestroyNotify)g_free);
 }
 
 static const gchar *
 gtk_widget_buildable_get_name (GtkBuildable *buildable)
 {
-  return gtk_widget_get_name (GTK_WIDGET (buildable));
+  return g_object_get_data (G_OBJECT (buildable), "gtk-builder-name");
 }
 
 static GObject *
