Redraw: ,-------------. ,---------. ,-----------------. ,-------------. |DiaCanvasView| |DiaCanvas| |DiaCanvasViewItem| |DiaCanvasItem| `-------------' `---------' `-----------------' `-------------' | | | | update() | | | | --------------->|dirty_region() | | | |-------------->| update() | | |---------------+-------------->| update() | | | |-------------->| | | | | : : : : draw() | | | | --------------->| | draw() | | |---------------+-------------->| render() | | | |-------------->| Add a new DiaCanvasItem: | | | add() | | new_item() |<--------------+---------------+------- |<--------------| create() | | |---------------+-------------->| | | | | | Remove an item: | | | unparent() | | |---------------+-------------->| | | | destroy | | remove() | |<--------------| |<--------------+---------------| | Event scenario 2 (uses the item finder of GnomeCanvas): NOTE: Before the event is send to the DiaCanvasViewItem, the coordinates are converted to coordinates relative to the DiaCanvas(View)Item. This is standard GnomeCanvas behaviour. event() | | | | --------------->| find_item() | | | |------------. | | | |<-----------' | event() | | |---------------+-------------->| event() | | | |-------------->|