I've been looking at the demo app for awhile now.  Specifically the use of g_object_set_data to add a boolean to items so that the item_view_created signal can determine whether or not to add the event handlers.

I quite like the idea of having the view generate the item view created signal for this purpose, there just needs to be a better C++ way to accomplish the g_object_set/get_data method.  The best fix I came up with would be to patch goocanvas to add some sort of switch to turn this signal on and off.

Anyway, just a thought for now I wanted to write down before I forgot.