Index: libgnomecanvas/gnome-canvas.c
===================================================================
--- libgnomecanvas/gnome-canvas.c	(revision 1256)
+++ libgnomecanvas/gnome-canvas.c	(working copy)
@@ -1162,7 +1162,6 @@
 	}
 
 	item->canvas->focused_item = item;
-        g_object_set_data (item->canvas, "focused_item", item);
 	gtk_widget_grab_focus (GTK_WIDGET (item->canvas));
 
 	if (focused_item) {                                                     
@@ -1932,7 +1931,8 @@
 static guint canvas_signals[LAST_SIGNAL];
 
 enum {
-	PROP_AA = 1
+	PROP_AA = 1,
+	PROP_FOCUSED_ITEM
 };
 
 /**
@@ -1979,6 +1979,9 @@
 	case PROP_AA:
 		g_value_set_boolean (value, GNOME_CANVAS (object)->aa);
 		break;
+	case PROP_FOCUSED_ITEM:
+		g_value_set_object (value, GNOME_CANVAS (object)->focused_item);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1995,6 +1998,9 @@
 	case PROP_AA:
 		GNOME_CANVAS (object)->aa = g_value_get_boolean (value);
 		break;
+	case PROP_FOCUSED_ITEM:
+		GNOME_CANVAS (object)->focused_item = g_value_get_object (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -2048,6 +2054,11 @@
 							       FALSE,
 							       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 
+	g_object_class_install_property (gobject_class, PROP_FOCUSED_ITEM,
+		 			 g_param_spec_object ("focused_item", NULL, NULL,
+					 GNOME_TYPE_CANVAS_ITEM,
+					 (G_PARAM_READABLE | G_PARAM_WRITABLE)));
+
 	canvas_signals[DRAW_BACKGROUND] =
 		g_signal_new ("draw_background",
 			      G_TYPE_FROM_CLASS (object_class),
